{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "05fcd50a-4c9a-4b28-a50d-725c72b07a3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import enum\n",
    "class Primitive(enum.Enum):\n",
    "    rho, u, p = 0, 1, 2\n",
    "class Conservative(enum.Enum):\n",
    "    mass, momentum, energy = 0, 1, 2\n",
    "\n",
    "GAMMA = 1.4\n",
    "  \n",
    "def flux(q0, flux_type: Conservative):\n",
    "    p = (GAMMA - 1) * (q0[Conservative.energy.value] - 0.5 * q0[Conservative.momentum.value]**2 / q0[Conservative.mass.value])\n",
    "    if flux_type == Conservative.mass:\n",
    "        return q0[Conservative.momentum.value]\n",
    "    if flux_type == Conservative.momentum:\n",
    "        return (q0[Conservative.momentum.value]**2) / q0[Conservative.mass.value] + p\n",
    "    if flux_type == Conservative.energy:\n",
    "        return (q0[Conservative.momentum.value] * q0[Conservative.energy.value] + p * q0[Conservative.momentum.value]) / q0[Conservative.mass.value]\n",
    "\n",
    "def back_to_primitive(q0, primitive_type: Primitive):\n",
    "    if primitive_type == Primitive.rho:\n",
    "        return q0[Conservative.mass.value]\n",
    "    if primitive_type == Primitive.u:\n",
    "        return q0[Conservative.momentum.value] / q0[Conservative.mass.value]\n",
    "    if primitive_type == Primitive.p:\n",
    "        return (GAMMA - 1) * (q0[Conservative.energy.value] - 0.5 * q0[Conservative.momentum.value]**2 / q0[Conservative.mass.value])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1dca345d-3fe2-4e6f-9154-13dde6c2637f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from weno5_scheme import weno5_reconstruction\n",
    "from rk3 import rk3\n",
    "\n",
    "ghost_cells_n = 3\n",
    "\n",
    "x_l, x_r, t = 0, 1, 0.2\n",
    "nx = 200\n",
    "dt = 0.0001\n",
    "dx = (x_r - x_l) / nx\n",
    "nt = int(t / dt)\n",
    "\n",
    "x = np.linspace(dx / 2 - ghost_cells_n * dx, x_r - dx / 2 + ghost_cells_n * dx, nx +2 * ghost_cells_n)\n",
    "\n",
    "# primitive states\n",
    "u = np.zeros((nt + 1, len(Primitive), nx  + 2 * ghost_cells_n))\n",
    "for i, pos in enumerate(x):\n",
    "    u[0, Primitive.rho.value, i] = 1.0 if pos < 0.5 else 0.125\n",
    "    u[0, Primitive.u.value, i] = 0.0\n",
    "    u[0, Primitive.p.value, i] = 1.0 if pos < 0.5 else 0.1\n",
    "\n",
    "rho0, u0, p0 = u[0, Primitive.rho.value], u[0, Primitive.u.value], u[0, Primitive.p.value]\n",
    "\n",
    "q = np.zeros((nt + 1, len(Primitive), nx  + 2 * ghost_cells_n))\n",
    "\n",
    "q[0, Conservative.mass.value] = rho0\n",
    "q[0, Conservative.momentum.value] = rho0 * u0\n",
    "q[0, Conservative.energy.value] = rho0 * (p0 / (rho0 * (GAMMA - 1.0)) + 0.5 * u0**2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a73432ef-d428-43aa-a858-c62ad7ab70f6",
   "metadata": {},
   "source": [
    "### Primitive states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3d023fe9-b4ec-40a4-874e-0a065a2f221a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1500x400 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "states = (r\"$\\rho$\", r\"$u$\", r\"$p$\")\n",
    "plt.figure(figsize=(15, 4), dpi=100)\n",
    "for i, state in enumerate(Primitive, 1):\n",
    "    plt.subplot(1, 3, i)\n",
    "    plt.plot(x, u[0, state.value], linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(states[i-1])\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "584852c9-215d-4c2c-83be-dadd4597a505",
   "metadata": {},
   "source": [
    "### Conservative states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "74d41992-fee3-47c1-9614-a07b688edb39",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1500x400 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "states = (r\"$\\rho$\", r\"$\\rho u$\", r\"$\\rho e$\")\n",
    "plt.figure(figsize=(15, 4), dpi=100)\n",
    "for i, state in enumerate(Conservative, 1):\n",
    "    plt.subplot(1, 3, i)\n",
    "    plt.plot(x, q[0, state.value], linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(states[i-1])\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ab26ccbb-cd40-4a13-981b-d013a9a05925",
   "metadata": {},
   "outputs": [],
   "source": [
    "rhs_buffer = np.zeros((len(Conservative), nx))\n",
    "conser_values_L, conser_values_R = np.zeros((len(Conservative), nx+1)), np.zeros((len(Conservative), nx+1))\n",
    "f = np.zeros((len(Conservative), nx+1))\n",
    "\n",
    "# for Dirichlet boundary (for this case, symmetric boundary is possible)\n",
    "def update_ghost_cells(buffer):\n",
    "    buffer[:, 0], buffer[:, 1], buffer[:, 2] = buffer[:, 5], buffer[:, 4], buffer[:, 3]\n",
    "    buffer[:, -1], buffer[:, -2], buffer[:, -3] = buffer[:, -6], buffer[:, -5], buffer[:, -4]\n",
    "    \n",
    "\n",
    "def right_hand_side(q0):\n",
    "    # update first term\n",
    "    for i in range(nx + 1):\n",
    "        for state in Conservative:\n",
    "            value = (q0[state.value, i], q0[state.value, i + 1], q0[state.value, i + 2], q0[state.value, i + 3], q0[state.value, i + 4])\n",
    "            conser_values_L[state.value, i] = weno5_reconstruction(value)\n",
    "            \n",
    "            value = (q0[state.value, i+5], q0[state.value, i + 4], q0[state.value, i + 3], q0[state.value, i + 2], q0[state.value, i + 1])\n",
    "            conser_values_R[state.value, i] = weno5_reconstruction(value)\n",
    "            \n",
    "    for state in Conservative:\n",
    "        f[state.value] = 0.5 * (flux(conser_values_L, state) + flux(conser_values_R, state))\n",
    "\n",
    "    # update second term \n",
    "    # TODO: better logic\n",
    "    for i in range(nx + 1):\n",
    "        rhoL = conser_values_L[Conservative.mass.value, i]\n",
    "        uL = conser_values_L[Conservative.momentum.value, i] / rhoL\n",
    "        eL = conser_values_L[Conservative.energy.value, i] / rhoL\n",
    "        pL = (GAMMA - 1) * (eL * rhoL - 0.5 * rhoL * uL**2)\n",
    "        hL = eL + pL / rhoL\n",
    "        \n",
    "        rhoR = conser_values_R[Conservative.mass.value, i]\n",
    "        uR = conser_values_R[Conservative.momentum.value, i] / rhoR\n",
    "        eR = conser_values_R[Conservative.energy.value, i] / rhoR\n",
    "        pR = (GAMMA - 1) * (eR * rhoR - 0.5 * rhoR * uR**2)\n",
    "        hR = eR + pR / rhoR\n",
    "        \n",
    "        alpha = 1 / (np.sqrt(abs(rhoL)) + np.sqrt(abs(rhoR)))\n",
    "        \n",
    "        uu = (np.sqrt(abs(rhoL))*uL + np.sqrt(abs(rhoR))*uR)*alpha\n",
    "        hh = (np.sqrt(abs(rhoL))*hL + np.sqrt(abs(rhoR))*hR)*alpha\n",
    "        aa = np.sqrt(abs((GAMMA - 1) * (hh - 0.5 * uu**2)))\n",
    "        \n",
    "        ps = abs(aa + uu)\n",
    "        \n",
    "        for state in Conservative:\n",
    "            f[state.value, i] -= 0.5 * ps * (conser_values_R[state.value, i] - conser_values_L[state.value, i])\n",
    "\n",
    "    for i in range(nx):\n",
    "        for state in Conservative:\n",
    "            rhs_buffer[state.value, i] = - (f[state.value, i+1] - f[state.value, i]) / dx\n",
    "    return rhs_buffer\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "053fa3f7-5caf-41ad-b7b6-04034677f5d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "intermediate = np.zeros_like(q[0])\n",
    "to_update_slice = slice(ghost_cells_n, nx+ghost_cells_n)\n",
    "\n",
    "for i in range(1, nt+1):\n",
    "    \n",
    "    buffer = right_hand_side(q[i-1])\n",
    "    intermediate[:, to_update_slice] = rk3(1, q[i-1, :, to_update_slice], buffer, dt, None)\n",
    "    update_ghost_cells(intermediate)\n",
    "    \n",
    "    buffer = right_hand_side(intermediate)\n",
    "    intermediate[:, to_update_slice] = rk3(2, q[i-1, :, to_update_slice], buffer, dt, intermediate[:, to_update_slice])\n",
    "    update_ghost_cells(intermediate)\n",
    "    \n",
    "    buffer = right_hand_side(intermediate)\n",
    "    intermediate[:, to_update_slice] = rk3(3, q[i-1, :, to_update_slice], buffer, dt, intermediate[:, to_update_slice])\n",
    "    update_ghost_cells(intermediate)\n",
    "    \n",
    "    q[i] = intermediate\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8b60641-2ae6-4ccb-9c2e-9002d3b45c17",
   "metadata": {},
   "source": [
    "### Note that $\\rho e$ are plotted, not $e$\n",
    "\n",
    "### Pressure profile in his paper is wrong. He forgot multiplying $0.5$ for kinetic energy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "97088a48-5207-42dc-a92c-f8429f11cea2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAMVCAYAAABqdZdfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAACdoklEQVR4nOzdeXhc5X33/893ZrSvlrXZ8r7JBgNe2MwqswQHkgDZSNOkSUlo05Df86RJmpS0SUq6kD5tSdOHJM1DUlKybw0JIWAgWGYzm8EGb/K+29psa19n7t8fMwIhJFmS58yZ0bxf13UuM0fnSB8dbN36zr2Zc04AAAAAACD+An4HAAAAAABgsqLoBgAAAADAIxTdAAAAAAB4hKIbAAAAAACPUHQDAAAAAOARim4AAAAAADxC0Q0AAAAAgEdCfgfwg5mZpOmS2vzOAgDAMAokHXXOOb+D+I02GwCQ5E7bZqdl0a1o433Y7xAAAIxihqQjfodIArTZAIBkN2qbna5Fd5skHTp0SIWFhX5nAQDgda2trZo5c6ZEz+4A2mwAQFIaa5udrkW3JKmwsJAGHACAFECbDQBIVSykBgAAAACARyi6AQAAAADwCEU3AAAAAAAeoegGAAAAAMAjFN0AAAAAAHiEohsAAAAAAI9QdAMAAAAA4BGKbgAAAAAAPELRDQAAAACAR3wvus3sCjN70MyOmpkzs5vGcE+Nmb1sZj1mttvMPup9UgAAAAAAxsf3oltSnqTNkm4fy8VmNlfSQ5LWSVom6d8lfdfMrvMoHwAAAAAAExLyO4Bz7mFJD0uSmY3llk9I2uec+2zs9XYzu0zSX0paO9wNZpYlKWvQqYIJBx6io6df331q35CvN+TrvyXPW/KN+jXe+vnsNB8/s/vf+vWHXH/az3+a+09z/eALTve1inIyVFWco+rKAuVm+v7XGQAAYNLpD0e0v7lDO4636UBzp/rCEWUEA5o9NVdzpuZpbmme8rLS7/cw55y6+yLKzgiMqY4JR5w6evvV0xfRlNwMhYLJ0P+JREjFfx2rJD0+5NxaRXu8R3KHpK94Eaa7L6wfv3Dg9dfOvfnjQ16+5eNDrzj9/e40Hx/f9UNPnPHXG+f3M/jEeO91zikSO5kRNK2YNUV/eulcXXd2xVjfwAEAAEgrW4606DtP7tVrh0/p6Klu5WQGVZyboRlTcjSjOFdVU3KUnRFQd1+s0D7Wpt2N7ertj0iSinMzlBWKfrylq+/1z1tRmKV5pfmaXpyj4twMmaSuvrC6+yLq7gurqy+srt7on33hiDJDAWWHgsrKiP6ZnRFQdkZQWaGAnKSu3rC6+6P3DhxdfWH19kcUMFMoaAoFAgoFBv130BQKmIIBU8Ds9d8lB37HfOP1GzKDAWUETRnBgPrCETV39Kq5vVcnO3s1syRX151dqXllecoKBnSspVv7mzu0ryl6HGjuVHtPvwImTcnN1NzSPM0ry9O8snwV5WSotz+ioy1d2tPQob2N7Tp4olP9sV9eAyaVF2SrsihbFYVZKs3PUl5WSL39EbV29amhrUeNbT1qbO+JPq9gQBWF2Zo9NVezp+ZpZkmOCrMzlBEMqLWrT6e6enWqs0+nuvp0qjP23519yggFVJafpWuWlOs9K2cog0LfFza0qPKTmTlJNzvnHhjlmp2S7nPO3TXo3PWKDjnPdc51DXPPcD3dh1taWlRYWBiv+Egw55xau/t16ESnNh44qbVbj+vZPc26YM4U/ccfLde0ohy/IwLAuLW2tqqoqEiSipxzrX7n8ZuZFUpqoc0GzoxzTt97ep/++ZEdmlWSqysXlWtWSY66+yM60dGrIye7dPhkpw6f7FJvOKKsUEAzpuRqcWWBqmPH4spCleRlvv45T3X2al9Th/Y2dmh/c/TP463dOtnZK0nKyQgqOyNaUOdkhJSTGVRORkAZwYB6+yPqGSiqY3/29EfU0xeWmUWL8FBQOZlvFOTZGUFlBgNyzqkv4hQOO/VFIgpHnPrDTv2x/+4Lv9GVM9ANM9Af88ZrU8Q5hSNOvf0R9YUjCgUCKsnL1NT8TE3JzdTWoy16eneT+sJv1EsVhVmv9+7PKc1TRWGWunojamzr0b6mdu1t6tC+xg619/YrIxBQeWGW5pflR4vx0jxNyctUZjCg5o5eHTvVpWMt3Tre2q0THb3q7A0rKxRQflZI5YVZKsvPUllB1uvP61hrtw40R4v9o6e6Xu98kqSC7JCKczNUnJMZ/TM3U0U5IfX1Ox062aln9zRrZkmO7vvoBVpQHrdBv2lvrG12KvZ0j5tzrkdSz8BrekEnBzNTUU6GiqqKtLSqSB+5ZI6e3Nmov/7Vq/rj7z6vn//5KpXmZ53+EwEAAExy9284oH94aLtuu3yu/uq6xcoMnXmPZ3FuppbPytTyWVPikDA5dfWGdaqrVz19EZUXZo1pOqNzzvN6Ixxx6uztV1/YqTA7dNqh6juOt+rW+17Uf67fq39933meZsNbpeL4guOSKoacq5DUOlwvN9LLFYvK9KPbLlZbd78+/L0X1Nnb73ckAAAAX+1v6tDXHt6hP1k1W39zw1lxKbjTRU5mUNOKcjSnNG/M6wclooMvGDAVZGeoJC9zTHPDF1cW6o8unKWHXj2m1u6+016P+ErFf3EbJF095Ny1sfOA5pbm6Qcfu1B7Gtt1zxO7/Y4DAADgm0jE6a9+uVllBVn6wprFfseBj957/gz19If14OajfkdJO74X3WaWb2bLzGxZ7NTc2OtZsY/fZWb3D7rlPyXNM7P/Y2aLzeyTkt4v6euJTY5ktriyULfXLNC9T+3V7oY2v+MAAAD44tFt9Xpx/0n983vOTcsVxvGGaUU5qqku189ePOR3lLTje9Et6XxJr8QOSbo79t9fjb2eJmnWwMXOuX2SblC0d3uzpM9K+rhzbtjtwpC+/vzKeaoqztHfPrDlLauwAwAApIPvPrVXF84p0ar5U/2OgiRwywUz9erhFu2qp1MqkXwvup1ztc45G+b4aOzjH3XO1Qxzz3LnXJZzbr5z7vs+REeSy84I6ivvPFvP7T2hZ/c0+x0HAAAgoV4+eFIvHTipj18+1+8oSBLLZxZLkg40d/obJM34XnQDXqqpLtPZ0wv1rVrmdgMAgPTy3af2am5pnq5ZMnQNYqSrwpwMSXrTHuvwHkU3JjUz0+2rF+iZ3c3afOiU33EAAAASor61W49sOa5bL52jQIDtchE1sG86RXdiUXRj0rvu7ErNK82jtxsAAKSNB145ooxgQDcur/I7CpJMUU4GRXeCUXRj0gsGTLddMU+PbqvXoRPMXwEAAJObc06/evmw3nZ2pQqzM/yOgyRD0Z14FN1ICzcum678rJB+8sJBv6MAAAB4auvRVu2sb9e7V9DLjbcqyslQK0V3QlF0Iy3kZob0nhUz9POXDqm3P+J3HAAAAM/8z8tHVJqfpcsXlPodBUmInu7Eo+hG2vjji2apqb1Xj2w97ncUAAAAT4QjTr/dfFQ3LpuuUJBf9fFWhRTdCce/RKSNhRUFumhuiX703AG/owAAAHjipf0n1NTeo3ecO83vKEhSRTkZOkXRnVAU3UgrH7hwpp7fd4IF1QAAwKT0yNbjqizM1nkziv2OgiRVnJNJT3eCUXQjrVx3dqXyMoP61cuH/Y4CAAAQV845rd1yXNedXcHe3BhRUU6IojvBKLqRVnIzQ7rh3Gn61cuHFYk4v+MAAADEzWtHWnS0pVvXLa30OwqSWFFuhnr7I+ruC/sdJW1QdCPtvHflTB060aUX95/wOwoAAEDcPLzluKbkZujCOSV+R0ESK8qJ7t1Ob3fiUHQj7VwwZ4pmleTqlxsZYg4AACYH55we2XJc155VwarlGBVFd+LxLxJpx8z0nhUz9PvXjqmzt9/vOAAAAGdsV0O79jV1aA1Dy3EaFN2JR9GNtPTuFVXq6A1rLXt2AwCASeCRLceVnxXSJfNL/Y6CJFc4UHR3UnQnCkU30tLMklxdPK+EIeYAAGBSeHjLca1eXK7sjKDfUZDkBnq62as7cSi6kbbes2KGnt3TrCOnuvyOAgAAMGEHmju0/Vir3s7QcoxBViionIwgw8sTiKIbaev6c6YpJyOoX7NnNwAASGFrtx5XViigKxeV+R0FKaIoJ4OiO4EoupG28rJCWnN2pf7nlSNyjj27AQBAanpsW70uX1iqvKyQ31GQIopyMtRK0Z0wFN1IazevqNLexg69erjF7ygAAADj1tLZp40HTuqqxRV+R0EKoac7sSi6kdYumV+q8oIs/fqVI35HAQAAGLcndzUq4qSaaoaWY+wKKboTiqIbaS0YMN24bLoe3HxUfeGI33EAAADGZV1dgxZXFmh6cY7fUZBC6OlOLIpupL2bl89Qc0evntzZ6HcUAACAMYtEnNbXNepKerkxTsW5GTrV2et3jLRB0Y20d9b0Qi2uLND/MMQcAACkkC1HW9Tc0avV1eV+R0GKifZ09/sdI21QdAOSbl5epce21au1m2E2AAAgNazb0aiCrJBWzp7idxSkmIHVy9nBJzEougFJNy6rUl84oodfO+Z3FAAAgDFZV9egyxeVKiPIr/QYn6KcDPWGI+ruY02jROBfKCCpsihbl84v1f+8zBBzAACQ/Jrbe7T58CnVMLQcE1CUkyFJLKaWIBTdQMzNy6v0/L4TOnKqy+8oAAAAo3pyV6Ock2oWsYgaxi8nMyhJ6uoL+5wkPVB0AzFrllYqJyOoB1hQDQAAJLl1Oxq1tKpQ5YXZfkdBCgoFTJIUjjC8PBEouoGYvKyQrju7Qr9+5QiLSgAAgKQVjjg9uatRNYsYWo6JCb5edPscJE1QdAOD3LxihnY3tGvLkVa/owAAAAxr06FTOtXZp9WLGVqOiQkFomVgPz3dCUHRDQxy6fypKs3P0v+8ctjvKACQlMzsdjPbb2bdZva8mV14mus/bWZ1ZtZlZofM7OtmxnhY4AzU1jWoODdDy2ayVRgm5o2ebkZ3JgJFNzBIKBjQjcum68HNR9XPeBsAeBMzu0XS3ZLulLRC0mZJa81s2DGuZvZBSV+LXb9E0sck3SLpnxISGJik1tU16IqFZa8XTsB4hYLRvzv9FN0JQdENDHHz8io1tffqqV1NfkcBgGTzGUn3Oufuc85tk/QJSZ2Sbh3h+kskPeOc+7Fzbr9z7lFJP5E0au84gJE1tHZry5FWhpbjjNDTnVgU3cAQZ08v1KKKfP0Pq5gDwOvMLFPSSkmPD5xzzkVir1eNcNuzklYODEE3s3mSrpf0+1G+TpaZFQ4ckgri9C0Ak0LtzkaZSVcspOjGxA2sXt4fpuhOBIpuYAgz083LZ+jRrcfV1t3ndxwASBalkoKS6oecr5dUOdwNzrkfS/qypKfNrE/SHkm1zrnRhpffIall0MEiG8AgtXUNOm9GsabmZ/kdBSksYPR0JxJFNzCMm5ZPV284ooe3HPc7CgCkLDOrkfRFSZ9UdA74uyXdYGZfGuW2uyQVDTpmeJsSSB194Yie2tWkmmp6uXFm3pjTzRpGiUDRDQxjWlGOVs2bql+/zBBzAIhpkhSWVDHkfIWkkd6h/HtJP3DOfdc595pz7teKFuF3mNmwv4M453qcc60Dh6S2OOUHUt7LB06qrbtfq6vZnxtnhjndiUXRDYzg5uVVem5fs46e6vI7CgD4zjnXK2mjpKsHzsUK56slbRjhtlxJQ7tRwgO3xzsjMNmtq2vU1LxMnVNV5HcUpLiBfbopuhODohsYwdvPmaasUEC/2XTU7ygAkCzulnSbmX3EzJZI+rakPEn3SZKZ3W9mdw26/kFJf2FmHzCzuWZ2raK93w8658JDPzmA0dXWNejK6jIF2CoMZ4ie7sQK+R0ASFb5WSG97axK/fqVw/rElfNkRgMHIL05535mZmWSvqro4mmbJK1xzg0srjZLb+7Z/gdJLvZnlaRGRQvxv0lUZmCyOHqqSzuOt+n21Qv8joJJ4PXVyym6E4KiGxjFzcur9KffP6qtR1u1lKFcACDn3D2S7hnhYzVDXvdLujN2ADgDtXWNCrBVGOKEnu7EYng5MIrLF5aqND9Tv2bPbgAA4KPaugatmDVFRbkZfkfBJEBPd2JRdAOjCAUDeud50/WbTUfVH2ZLBQAAkHg9/WE9s7tJqxezajni442ebn6/TQSKbuA03r18hprae/T07ia/owAAgDT00v6T6ugNsz834sbMFAwYPd0JQtENnMbSqkItKM9niDkAAPDFuh0NKi/I0lnTCv2OgkkkaMac7gSh6AZOw8x08/Iqrd16XO09/X7HAQAAaWZdXYNWV5ezkwriKhgw9YcpuhOBohsYg5uWV6m7L6JHthz3OwoAAEgjB5s7taexQ6sXM7Qc8RUK0NOdKBTdwBhUFefo4nkl+vUrh/2OAgAA0kjtzgaFAqZLF5T6HQWTTDBoCjuK7kSg6AbG6N3LZ+jZPc061tLldxQAAJAmausadf6cKSrIZqswxBc93YlD0Q2M0dvPqVRmMKDfbjrqdxQAAJAGuvvCenZPk1ZXs1UY4o853YlD0Q2MUUF2hq49q4JVzAEAQEI8t7dZ3X0R9ueGJ0KBAPt0JwhFNzAONy+v0o7jbdp2tNXvKAAAYJKrrWtUVXGOFpbn+x0FkxD7dCcORTcwDlcsKtPUvEwWVAMAAJ5yzumJHQ2qqS5jqzB4gjndiUPRDYxDRjCgd543Xb9+5aj6wgzHAQAA3tjX1KGDJzqZzw3PBOjpThiKbmCc3nf+DDW192h9XaPfUQAAwCRVW9eozGBAlyyY6ncUTFL0dCcORTcwTmdPL9JZ0wr1i42H/I4CAAAmqXV1DbpoXolyM0N+R8EkFZ3TzcjNRKDoBibg/efP0B+2N6ipvcfvKAAAYJLp7O3X83tPqIah5fBQtKfb7xTpISmKbjO73cz2m1m3mT1vZhee5vpPm1mdmXWZ2SEz+7qZZScqL3DjsioFzPQA24cBAIA4e3Z3s3rDEa2uLvM7CiaxYMDYMixBfC+6zewWSXdLulPSCkmbJa01s2Hf2jOzD0r6Wuz6JZI+JukWSf+UkMCApCl5mbr2rAr94qXDco65MAAAIH7W1TVo9tRczS3N8zsKJrFQIMBCagnie9Et6TOS7nXO3eec2ybpE5I6Jd06wvWXSHrGOfdj59x+59yjkn4iadTecSDe3nv+DNXVt+m1Iy1+RwEAAJOEc061dY1aXV3OVmHwVJCF1BLG16LbzDIlrZT0+MA551wk9nrVCLc9K2nlwBB0M5sn6XpJvx/l62SZWeHAIakgTt8C0tgVC8tUWZitn7/EgmoAACA+djW068ipLtUwtBweCwXZMixR/O7pLpUUlFQ/5Hy9pMrhbnDO/VjSlyU9bWZ9kvZIqnXOjTa8/A5JLYOOw2eYG1AwYHr3iir9dtNRdfeF/Y4DAAAmgdq6BmVnBHTxPLYKg7eCAVM4TNGdCH4X3eNmZjWSvijpk4rOAX+3pBvM7Euj3HaXpKJBxwxvUyJdvHflDLV292vt1uN+RwEAAJPAuh2NWjVvqrIzgn5HwSQXCtDTnSh+F91NksKSKoacr5A0UhXz95J+4Jz7rnPuNefcrxUtwu8ws2G/H+dcj3OudeCQ1Ban/Ehz88rydcGcKfrlRgZPAACAM9PW3acX95/Q6sVsFQbvBYzVyxPF16LbOdcraaOkqwfOxQrnqyVtGOG2XElD/3YMjO1ltQkk3PtWztTTu5t05FSX31EAAEAKe2Z3k/ojTjWLKLrhPeZ0J47fPd1SdLuw28zsI2a2RNK3JeVJuk+SzOx+M7tr0PUPSvoLM/uAmc01s2sV7f1+0DnHxFok3PXnTlNORlC/orcbAACcgXU7GjW/LE+zpub6HQVpIBgIsHp5goT8DuCc+5mZlUn6qqKLp22StMY5N7C42iy9uWf7HyS52J9VkhoVLcT/JlGZgcHys0K6/pxp+sXGQ/rU6gUKBBhwAQAAxsc5p3V1DXrXedP9joI0EWLLsITxveiWJOfcPZLuGeFjNUNe90u6M3YASeF9K2folxsP67l9zbpkfqnfcQAAQIrZdqxVDW09zOdGwrBPd+Ikw/ByIOVdOLdEc0vz9PMX2bMbAACMX21do/Iygzp/zhS/oyBNsHp54lB0A3FgZrrlgpn6/ZbjOtnR63ccAACQYmrrGnTJglJlhdgqDIlBT3fiUHQDcfLelTPknNP/vHLE7ygAACCFtHT2aeOBk1pdzdByJA493YlD0Q3ESWl+lt52VqV++sJBOccPMAAAMDZP7mpUxEk11WV+R0Eaia5ezj7diUDRDcTRH104S7sa2rXxwEm/owAAgBSxrq5BiysLNL04x+8oSCPBgOjpThCKbiCOLpk/VTNLcvTjFw76HQUAAKSASMRpfV2jahhajgRjn+7EoegG4igQMH3ggll66NVjauns8zsOAABIcluOtqi5o1erGVqOBAsFTP1hiu5EoOgG4ux9589QOOL0wCYWVAMAAKNbt6NRBdkhrZjNVmFIrGDAFGEdooSg6AbirLwgW1cvKddPWFANAACcxrq6Bl2+sFQZQX4tR2Kxenni8K8b8MAfXThLO4636ZVDp/yOAgAAklRze482Hz7FfG74Ihhkn+5EoegGPHD5wjJVFefopyyoBgAARvDkrkY5J9UsYj43Ei86p5stwxKBohvwQDBguuWCmXpw8zG1drOgGgAAeKt1Oxq1tKpQ5YXZfkdBGmL18sSh6AY88v7zZ6qnP6zfbDrqdxQAAJBkwhGnJ3c1ajVDy+ET5nQnDkU34JHKomxdtbhCP3meBdUAAMCbbTp0Sqc6+5jPDd8EA8zpThSKbsBDH7xoprYda9UmFlQDAACD1NY1qDg3Q8tmFvsdBWkqGOvppnPIexTdgIeuXFSuGVNy9IPnDvgdBQAAJJF1dQ26YmGZggHzOwrS1MDfPTq7vUfRDXgoGDD98UWz9btXj+lER6/fcQAAQBJoaO3WliOtWr2YVcvhn1Cs6O6PsIK51yi6AY/dcsFMSdLPXzrkcxIAAJAManc2yky6YiFFN/zzek83NbfnKLoBj5XkZeod507TD587wGIVAABAtXUNOm9GsabmZ/kdBWksFIiWgvR0e4+iG0iAD188W4dPdqm2rsHvKAAAwEd94Yie2tXEVmHw3UBPN51C3qPoBhJg2cxinVNVxIJqAACkuZcPnFRbdz/zueG7N+Z0U3R7jaIbSAAz04dXzdb6nY060NzhdxwAAOCTdXWNKs3P1NLpRX5HQZoLBunpThSKbiBB3nnudBVmZ+hHzx/0OwoAAPBJbV2DrlhUpgBbhcFn9HQnDkU3kCA5mUG9//wZ+vlLh9TdF/Y7DgAASLCjp7q043gb87mRFIIW6+kOU3R7jaIbSKAPXTxbLV19+u3mo35HAQAACVZb16gAW4UhSQTZpzthKLqBBJo9NU9XLirTD1lQDQCAtLOurkErZ09RUW6G31EAhZjTnTAU3UCCffji2Xr1cIs2HTrldxQAAJAgPf1hPbu7STUMLUeSCMb26Q47im6vUXQDCVZTXa4ZU3J0/7P7/Y4CAONmZreb2X4z6zaz583swtNcX2xm3zSzY2bWY2Y7zez6ROUFksVL+0+qozfMfG4kjdcXUmNOt+couoEECwZMf7Jqtn736jE1tvX4HQcAxszMbpF0t6Q7Ja2QtFnSWjMbtoows0xJj0maI+m9kqol3SbpSCLyAslk3Y4GVRRmacm0Ar+jAJLemNPN8HLvUXQDPrjl/FkKBU0/ep653QBSymck3eucu885t03SJyR1Srp1hOtvlVQi6Sbn3DPOuf3OufXOuc0JygskjXV1DapZVC4ztgpDcmDLsMSh6AZ8UJSbofesmKEfPndAPf1sHwYg+cV6rVdKenzgnHMuEnu9aoTb3iVpg6Rvmlm9mW0xsy+aWXCUr5NlZoUDhyS6BZHyDjZ3ak9jh1YvZtVyJA96uhOHohvwyUcvnaOm9l49uPmY31EAYCxKJQUl1Q85Xy+pcoR75ik6rDwo6XpJfy/ps5L+dpSvc4eklkHH4YlHBpJD7c4GhQKmSxeU+h0FeF0otpAaW4Z5j6Ib8Mn8snytri7Tfz29T45VIwFMTgFJDZL+zDm30Tn3M0n/qOiw9JHcJalo0DHD85SAx2rrGnXBnBIVZLNVGJJHkC3DEoaiG/DRrZfN1bZjrXp+3wm/owDA6TRJCkuqGHK+QtLxEe45Jmmnc27wPJrtkipjw9XfwjnX45xrHTgktZ1hbsBX3X1hPbuniaHlSDpBY053olB0Az66bEGpFpbn67+e3ud3FAAYlXOuV9JGSVcPnDOzQOz1hhFue0bSgth1AxZJOhb7fMCk99zeZnX3RdgqDEnn9TndbBnmOYpuwEdmpj+9dK4e216vg82dfscBgNO5W9JtZvYRM1si6duS8iTdJ0lmdr+Z3TXo+m8runr5N8xskZndIOmLkr6Z4NyAb2rrGlVVnKMF5fl+RwHehNXLE4eiG/DZzcurVJSTof/esN/vKAAwqtic7M9J+qqkTZKWSVrjnBtYXG2WpGmDrj8k6TpJF0h6VdJ/SPqGpK8lLDTgI+ecntjRoJrqMrYKQ9IZmNMdYW0hz4X8DgCku5zMoD544Szdv+GAPn3NQhZZAZDUnHP3SLpnhI/VDHNug6SLPY4FJKV9TR06eKKToeVISvR0Jw493UAS+PCq2eruC+uXG9kZBwCAyWJdXaMygwFdsmCq31GAt3hjn262DPMaRTeQBKYV5ejt50zT95/dz7YNAABMErV1DbpoXolyMxlciuTz+j7dLKTmOYpuIEnceukcHWju1B+215/+YgAAkNQ6e/v1/N4TDC1H0op1dNPhkwAU3UCSWD5rilbOnqJ7n9rrdxQAAHCGnt3drN5wRKsXU3QjOZmZQgFjTncCUHQDSeTPrpinF/ef1MsHT/odBQAAnIF1dQ2aPTVXc0vz/I4CjCgQMHq6E4CiG0gi1y6p0NzSPN37JL3dAACkKuecausaGVqOpEdPd2JQdANJJBAwffzyuXpk63Htb+rwOw4AAJiAXQ3tOnKqSzXVZX5HAUYVDBirlycARTeQZN6zYoZKcjP13afp7QYAIBWt29Gg7IyALp7HVmFIbqGAKUzN7TmKbiDJZGcE9ZFL5ugXLx1Wc3uP33EAAMA41dY16pL5pcrOCPodBRhVMBCgpzsBKLqBJPThi2crYKb7NxzwOwoAABiHtu4+vbj/hFYztBwpgDndiUHRDSShKXmZev/5M3T/hv3q6g37HQcAAIzRM7ub1B9xqmERNaSAIKuXJwRFN5CkPn75PLV09emXGw/5HQUAAIzRuh2Nml+Wp5kluX5HAU4rFKSnOxEouoEkNbMkV28/Z5q++/Q+3oEEACAFOOe0rq6BrcKQMujpTgyKbiCJ/fkV83SguVOPbj3udxQAAHAa2461qqGtR6sXU3QjNQTN1B+m6PYaRTeQxM6dUayL55XoO0/ulXP8QAQAIJnV1jUqLzOo8+dM8TsKMCbs050YFN1AkvvzK+dr06FTem7vCb+jAACAUdTWNejSBaXKCrFVGFIDc7oTg6IbSHI1i8q0ZFqhvlW72+8oAABgBC2dfdp44CSrliOlRPfppuj2GkU3kOTMTJ+sma+ndjXp1cOn/I4DAACG8eSuRkWcVMP+3EghIRZSSwiKbiAFXH/ONM2ZmqtvrdvjdxQAADCM2rpGVVcUaHpxjt9RgDFj9fLEoOgGUkAwYPqLmvl6ZOtx7apv8zsOAAAYJBJxWr+zUTWL6eVGagkFmNOdCBTdQIq4efkMTSvK1rfX09sNAEAy2Xq0VU3tPapZxHxupBZ6uhMjKYpuM7vdzPabWbeZPW9mF57m+mIz+6aZHTOzHjPbaWbXJyov4IfMUEAfv3yefrPpqA6d6PQ7DgAAiKmta1B+VoitwpByoj3dbBnmNd+LbjO7RdLdku6UtELSZklrzWzYtwrNLFPSY5LmSHqvpGpJt0k6koi8gJ/+6MKZKswO6d6n9vodBQAAxKyra9BlC0qVEfT9V2tgXFi9PDGS4SfDZyTd65y7zzm3TdInJHVKunWE62+VVCLpJufcM865/c659c65zSN9ATPLMrPCgUNSQby/CSARcjNDuvXSufrpi4fU0NbtdxwAANLeyY5ebTp0SquZz40UFAyIOd0J4GvRHeu1Xinp8YFzzrlI7PWqEW57l6QNkr5pZvVmtsXMvmhmwVG+1B2SWgYdh+ORH/DDn6yao8xgQP/19H6/owAAkPYGtgq7kvncSEEheroTwu+e7lJJQUn1Q87XS6oc4Z55ig4rD0q6XtLfS/qspL8d5evcJalo0DFj4pEBfxXlZuiPL56lHz53QC1dfX7HAQAgra2va9SSaYWqLMr2OwowbsGAqT9M0e01v4vuiQhIapD0Z865jc65n0n6R0WHpQ/LOdfjnGsdOCSx5xJS2scum6vecET3P7vf7ygAAKSt17cKq2ZoOVJTiNXLE8LvortJUlhSxZDzFZKOj3DPMUk7nXPhQee2S6qMDVcHJr3ygmx94IKZ+t4z+9Te0+93HAAA0tJrR1rU3NGr1dUMLUdqCgZMYUfR7TVfi27nXK+kjZKuHjhnZoHY6w0j3PaMpAWx6wYsknQs9vmAtPCJK+ero6df92/Y73cUAADS0rq6BhVkh7RiVrHfUYAJCQWNhdQSwO+ebim6XdhtZvYRM1si6duS8iTdJ0lmdr+Z3TXo+m8runr5N8xskZndIOmLkr6Z4NyAr6YX5+j958/UvU/uVQe93QAAJFxtXaOuWFimEFuFIUUFA6Yw+3R7zvefELE52Z+T9FVJmyQtk7TGOTewuNosSdMGXX9I0nWSLpD0qqT/kPQNSV9LWGggSXxy9QK19/TrB88d8DsKAABppbm9R5sPn9KVzOdGCgsFAiyklgAhvwNIknPuHkn3jPCxmmHObZB0scexgKRXVZyj966M9nb/yarZys1Min/SAABMek/tapJzUs0iim6kriALqSWE7z3dAM7MJ2vmq6WrTz+ktxsAgIRZV9egs6cXqryQrcKQuii6E4OiG0hxM0ty9d6VM/Sd9XvV2cvcbgAAvBaOOD25s5FVy5HyggEWUkuEcRfdZjbLzD5kZu8zswVehAIwPrevXqCWrj796LmDfkcBkETMrMTvDMBktPnwKZ3s7GN/bqQ89ulOjHEV3Wb2vyTtlfQtSd+VVGdmL5jZuV6EAzA2M0ty9Z4VM/SdJ/eoqzd8+hsApIsmMztkZr8zs380s/ebWbWZmd/BgFRWW9eoopwMLZtZ7HcU4IxEe7pZvdxr4+3p/pKiq4QXO+eKJFVLelrSBjO7LN7hAIzd7asX6GRnn370PHO7AbzuHEl/LWmbort+fDP23+1m9ryfwYBUVlvXoMsXlrJVGFJetKfb7xST33h/UuRL+r5zLiJJzrndzrnPSLpL0r/FOxyAsZs1NVfvXl6l7zy5V9199HYDkJxzW51zP3LOfd459zZJ5ZLeIemYpD/4mw5ITY1tPXr1cAvzuTEpBAMB9ulOgPEW3a9KWjXM+Z9LYog54LNPXbVAJzp6WckcwLBc1MOSPiSp0u88QCp6cmejJOkKtgrDJBBiIbWEGG/R/VlJ/2ZmtwyZD3aRpF3xiwVgImZPzdN7V8zQt2v3qKOHlcwBDM8595yk1X7nAFJR7c5GnTujSGUFWX5HAc4YW4YlxriKbufc05I+KulfJNWb2aNmVivp65K+EPd0AMbtf12zUG3d/fr+s/v9jgLAZ2bWbmYbzOw/zeyTZnapmU01szWSCvzOB6Sa/nBET+5sVA293JgkQkF6uhNh3Ks/OOd+L2mhosX3Jkl9sQ/9zswazewJM/v3eAUEMD5VxTn64EWz9J31e9TS1Xf6GwBMZu+V9BtJxZL+t6T1khok/U6sxQKM2+bDp9TS1aeaxcznxuRAT3dihCZyk3OuR9LvY4ckycxmSlomaXnsAOCTT66er5++eFD3PrlXn7uu2u84AHzinHtE0iMDr80sV9JcSc3OueO+BQNS1LodjZqSm6HzZhT7HQWIi6BFi27nnNhN0jsTKrqH45w7JOmQpAfj9TkBTEx5QbY+cskc/dcz+/TRS+eoNJ95ZwAk51ynpK1+5wBSVe3OBl2xqEzBAMUJJoeBv8vhiFMoyN9rr7C5IDBJfeKK+Qqa6du1e/yOAgBAymto69aWI62qqWY+NyaPgUKbed3eougGJqkpeZn62OVz9YPnDuhYS5ffcQAASGnr6xplJl2xkKIbk0cwEC0HmdftLYpuYBL72GVzlZcZ1P99YrffUQAASGnRrcKKNZUpW5hEQgPDyx1Ft5couoFJrCA7Q5+4cr5+/uIhHWzu9DsOAAApqT8c0VM7G7WaoeWYZF6f0x2m6PYSRTcwyf3Jqjmakpepf398p99RAABISa8cOqXW7n7VVLNVGCaXgZ5u5nR7i6IbmORyMoP6/65aoF9vOqIdx1v9jgMAQMpZt6NBU/MydW5Vkd9RgLgavHo5vEPRDaSBD1wwS7NKcvXPD+/wOwoAACmntq5RVywqU4CtwjDJhGILqfVHIj4nmdwouoE0kBkK6PPXLda6ukY9u7vJ7zgAAKSM+tZubTvGVmGYnGI1Nz3dHqPoBtLE9edU6ryZxbrr4R2K8IMVAIAxWV/XqABbhWGSeqOnm98NvUTRDaQJM9MX375Yrx1p0e9eO+Z3HAAAUsK6ugYtm1msKXmZfkcB4o453YlB0Q2kkYvmTdU1S8r1L2t3qKc/7HccAACSWl84oqd3NbFqOSat11cvZ8swT1F0A2nmC2sW68jJLv3wuYN+RwGQgszsdjPbb2bdZva8mV04xvs+YGbOzB7wOCIQNxsPnFRbT79WU3Rjkhro6Y44im4vUXQDaWZhRYFuuWCm/u8Tu9TS1ed3HAApxMxukXS3pDslrZC0WdJaMxu1IjGzOZL+VdJTXmcE4qm2rlGl+Zk6e3qh31EAT4SC7NOdCBTdQBr69DWL1NMX0bdr9/gdBUBq+Yyke51z9znntkn6hKROSbeOdIOZBSX9SNJXJO093RcwsywzKxw4JBXEJzowfrV1DbpyUTlbhWHSCr0+p5stw7xE0Q2koYrCbH388rn6r2f26cipLr/jAEgBZpYpaaWkxwfOOecisderRrn1y5IanHPfG+OXukNSy6Dj8IQCA2foWEuXdhxvY6swTGrBgdXLmdPtKYpuIE392RXzVJAV0r89Wud3FACpoVRSUFL9kPP1kiqHu8HMLpP0MUm3jePr3CWpaNAxY9xJgTioZaswpIEQq5cnBEU3kKYKsjP0l9cu0v+8fESbD53yOw6AScbMCiT9QNJtzrmmsd7nnOtxzrUOHJLaPAsJjKK2rkErZk1RUW6G31EAzwwspMacbm9RdANp7AMXzNTiygJ99Xfb5Fi1EsDomiSFJVUMOV8h6fgw18+XNEfSg2bWb2b9kv5E0rtir+d7GRY4E7390a3CVi9m1XJMbuzTnRgU3UAaCwUD+vI7ztLGAyf1281H/Y4DIIk553olbZR09cA5MwvEXm8Y5pYdks6RtGzQ8VtJ62L/fcjDuMAZeenACXX0hnXlIoaWY3KjpzsxQn4HAOCvSxaU6m1nVehrD+/Q286qVE5m0O9IAJLX3ZL+28xekvSCpE9LypN0nySZ2f2Sjjjn7nDOdUvaMvhmMzslSc65N50Hkk1tXaPKC7LYKgyTHquXJwY93QD0xeuXqKm9R995ki3EAIzMOfczSZ+T9FVJmxTtsV7jnBtYXG2WpGm+hAPiKLpVWJnM2CoMkxs93YlB0Q1Ac0rzdOulc/Wf6/foKFuIARiFc+4e59xs51yWc+4i59zzgz5W45z76Cj3ftQ5d1MicgITdeRUl3bWtzOfG2khFNsyjDnd3qLoBiBJ+tRVC5SflaF//P12v6MAAOCb2roGBQOmSxeU+h0F8BwLqSUGRTcASdEtxP7mhsV66NVjempXo99xAADwxbodjVo5a4qKctgqDJNfiOHlCUHRDeB1Ny2r0kVzS/Tl32xVT3/Y7zgAACRUT39Yz+5pUs1iVi1HeggETGb0dHuNohvA68xM/3DTUh060an/t36v33EAAEioF/edVGdvWDWLmM+N9BEKGD3dHqPoBvAmCysK9LHL5+qedbt16ESn33EAAEiY2roGVRRmacm0Ar+jAAkTMFM4zJZhXqLoBvAW/+uqhZqal6mv/HarnOOdTwBAelhX16CaReVsFYa0Qk+39yi6AbxFXlZIX37n2XpiR4Meeu2Y33EAAPDcoROd2tPYodXM50aaCQaMOd0eo+gGMKzrzq7Q9edU6ksPbFFjW4/fcQAA8FTtzkaF2CoMaSgUDNDT7TGKbgDDMjP9/Y1LFTDT3/z6NYaZAwAmtdodDTp/zhQVZLNVGNJLMGCKUHR7iqIbwIim5mfpH25aqke31es3m476HQcAAE9094X17J5m1VSzajnSD3O6vUfRDWBUbz9nmt513nR9+TdbVN/a7XccAADi7oV9J9TVF9Zqim6kIeZ0e4+iG8Bp3fmus5WVEdRf/+pVhpkDACad2rpGTSvK1qKKfL+jAAlHT7f3KLoBnNaUvEz983vO0bq6Rn17/R6/4wAAEFe1dQ2qqWarMKSnaE83+3R7iaIbwJhctbhCn1q9QP+6tk5P7Wr0Ow4AAHFxoLlDe5s6VFPNVmFIT6EAq5d7jaIbwJj95bWLdNnCMn3yRy/rtcMtfscBAOCM1dY1KiPIVmFIXwHmdHuOohvAmAUDpm9+cLnml+Xrw//1vLYdbfU7EgAAZ6S2rkEXzClRflbI7yiAL5jT7T2KbgDjUpCdof++9ULNnJKr93z7Wf1gw34WVwMApKSBrcJYtRzpLBgwhcP8Lucl3tIDMG5FORn66Z9drH/6/XZ96Tdb9YPnDmjN0mk6e3qhSvMzJZl6+sPq7Y9Ej3D0z57+6CIdU3IzNCU3UyV50WNKbqYCgTcWr+nqDetEZ69OtPeqoa1bze296uztV1/YKSNoygwFlRkKRI9gQFmhgDKCAfVFIuro6VdnT1gdvf0KmCkjGFBGcODPN/7byamtu1+t3f1q7epTOOIUDJim5GZqenG2phfnaHpxDj0fADCJPbe3WT39EeZzI63R0+09fpsEMCF5WSH9483n6IZzp+kXLx3W95/Zp9bu/tPeZyYN7RgPBky5mUFlhQLq6Amrqy/8lvsGCuyBAv50skIBOem01wYDpoLskDKCAYUjTqc6ezW43ZmSm6GZJbnRY0quZpXkakF5vpbPKlZGkMFCAJDKausaVVWcowXlbBWG9BUMmCKMWvQURTeAM3LJ/FJdMr9U4YjTyc5eNbf3ykzKDAZe743OGtQrHXFSa1efTnb26kRHr5o7etXU3qOOnn719EWUmxVSSV6GSvKyNCU3Q+UF2SrNz1RoUIHrnFNf2Kk3HFHfoJ70UNCUlxVSbkbw9eudcwpHnPojb1zfF3YykwqyQ8rJCL5pi5j+cET1bT06eqpLR0916dCJTh060aWDJzq16eApHWvpUsRFe/vfce40ff66xSrKzUj4cwcAnLnoVmFlbBWGtBYK0tPtNYpuAHERDJhK87NUmp81+nUW3fd7Sl6m5k1wNJ+ZKTNkygwFpNG/nMxMoaApFJSyM4Kn/dyhYEBVxTmqKs4Z9uN94Yi2H2vVY9vq9f1n9+vx7fX6+vuX6RJWvQWAlLKvqUP7mzv1tzcwnxvpLRgIsE+3xxgbCQDjkBEM6NwZxfrs26r16F9eobmlefrzH25UfWu339EAAONQW9egzGBAlyyY6ncUwFehgKmfhdQ8RdENABM0rShH//mhlcoKBfWlB7awijsApJB1dY26aF6JcjMZ+In0FmSfbs9RdAPAGSjOzdSd7zpbj26r1yNbjvsdBwAwBl29YT23t1lXLmLVciBozOn2WtIU3WZ2u5ntN7NuM3vezC4c430fMDNnZg94HBEAhnX9OZW6dMFU3ffMfr+jAADGYMPeJvX2R7R6MfO5gWCQnm6vJUXRbWa3SLpb0p2SVkjaLGmtmY36k9DM5kj6V0lPeZ0RAEZiZnr70mnaePCkWrr6/I4DADiN2rpGzSzJ0bzSPL+jAL6L7tPNQmpeSoqiW9JnJN3rnLvPObdN0ickdUq6daQbzCwo6UeSviJpb0JSAsAIaqrLFI44PbO7ye8oAIBROOe0rq5Bq6vL2SoMEHO6E8H3otvMMiWtlPT4wDnnXCT2etUot35ZUoNz7ntj+BpZZlY4cEgqOMPYAPAmM6bkakF5vmrrGvyOAgAYxd6mDh060aWaauZzA1K0p5ui21u+F92SSiUFJdUPOV8vqXK4G8zsMkkfk3TbGL/GHZJaBh2HJ5QUAEZRs6hM63c2soo5ACSxdTsalBkKaNW8Ur+jAEkhuk83v7t4KRmK7nExswJJP5B0m3NurOM475JUNOiY4VE8AGmsprpc9a092n6sze8oAIARrN/ZqIvnTVVOZtDvKEBSiM7ppuj2UjJsTNgkKSypYsj5CknD7b8zX9IcSQ8OmocTkCQz65dU7ZzbM/gG51yPpJ6B18zfAeCFC+ZOUW5mUOt3Nuqs6YV+xwEADNHR06/n957QHdcv9jsKkDSY0+0933u6nXO9kjZKunrgnJkFYq83DHPLDknnSFo26PitpHWx/z7kYVwAGFFWKKil04u09WiL31EAAMPYsKdZveGIaqrZKgwYQE+395Khp1uKbhf232b2kqQXJH1aUp6k+yTJzO6XdMQ5d4dzrlvSlsE3m9kpSXLOvek8ACTaosp8vbjvpN8xAADDWFfXoDlTczWXrcKA17FPt/eSouh2zv3MzMokfVXRxdM2SVrjnBtYXG2WJDaPA5D0qisK9NMXDqm3P6LMkO+DiQAAMc451dY16tqzhs5oBNJb0Nin22tJUXRLknPuHkn3jPCxmtPc+1EPIgHAuC2qKFB/xGl/c4cWVbA7IQAkiz2N7Tpyiq3CgKFCAVM4TE+3l+iGAYA4Gii0d9azgjkAJJN1OxqVFQro4nlT/Y4CJJVgIMCcbo9RdANAHE3Jy1RZQZZ2HqfoBoBkUruzQZfMn6rsDLYKAwYLMafbcxTdABBn1RUFqqOnGwCSRntPv17Yd4JVy4FhBAOmsKPo9hJFNwDE2cKKfO2qb/c7BgAg5tndTeoLO62m6Abegjnd3qPoBoA4q64o0P7mDnX3hf2OAgCQtK6uUfNK8zRraq7fUYCkE2Sfbs9RdANAnC2qLFDESbsb6O0GAL8557S+roGh5cAIQgHmdHuNohsA4mxheb4kVjAHgGSws75dR1u62SoMGEF09XL26fYSRTcAxFlBdoYqC7O1t7HD7ygAkPZq6xqUkxHUhXNL/I4CJKVgQIo4KUJvt2cougHAA3NL87SvmaIbAPy2rq5Bly5gqzBgJMFAtCRkBXPvUHQDgAfmlOZpHz3dAOCr1u4+vbT/pK5kPjcwolDAJIl53R6i6AYAD8wrzdP+5g453jUGAN88s6tJ/RGnmkXM5wZGEowV3axg7h2KbgDwwJzSPHX2htXQ1uN3FABIW+vqGrSwPF8zS9gqDBgJPd3eo+gGAA/MLc2TJO1rYog5APjBOafaukatXszQcmA0QYpuz1F0A4AHZpXkKmAU3QDgl23HWtXQ1sPQcuA0QsGB4eVsG+YVim4A8EBmKKAZU3IpugHAJ7V1jcrLDOr8OWwVBozm9dXL6en2DEU3AHhkbmkeRTcA+GTdjgZdtrBUmSF+3QVGMzCnuz9M0e0VfgoBgEcougHAHy2dfXr54EmtZqsw4LSY0+09im4A8Mjc0jwdbO6kEQOABHtyV6MiTrqymvncwOmwZZj3KLoBwCNzSvPUG47o6Kkuv6MAQFpZV9egxZUFmlaU43cUIOnR0+09im4A8Mi82LZhexlijknEzG43s/1m1m1mz5vZhaNce5uZPWVmJ2PH46NdD8RDJOK0nq3CgDF7fU43q5d7hqIbADxSVZyj7IyAdtW3+R0FiAszu0XS3ZLulLRC0mZJa81spOqmRtJPJK2WtErSIUmPmlmV92mRrrYcbVFzRy/zuYExoqfbexTdAOCRQMC0oDxfu+rb/Y4CxMtnJN3rnLvPObdN0ickdUq6dbiLnXN/7Jz7lnNuk3Nuh6SPK/q7x9UJS4y0s25HowqyQ1oxq9jvKEBKCLFlmOcougHAQ4vKC7SzgZ5upD4zy5S0UtLjA+ecc5HY61Vj/DS5kjIknRjl62SZWeHAIalg4qmRjtbVNeiKhWUKBfk1FxgLerq9x08jAPDQwooC7a5vl3M0ZEh5pZKCkuqHnK+XVDnGz/HPko5qUOE+jDsktQw6Do8vJtJZc3uPNh8+pRpWLQfGLMTq5Z6j6AYADy2qyFdbT7+OtXT7HQXwlZn9taQPSLrZOTfaP4i7JBUNOmYkIB4miSd3NcqxVRgwLvR0ey/kdwAAmMwWVURHxtbVt2l6MVvXIKU1SQpLqhhyvkLS8dFuNLPPSfprSdc4514d7VrnXI+knkH3Tigs0lNtXaPOqSpSeUG231GAlBEK0tPtNXq6AcBDVcU5yskIsoI5Up5zrlfSRg1aBM3MBhZF2zDSfWb2eUlfkrTGOfeS1zmRvsIRp/U7GxlaDoxT0AZ6utkyzCv0dAOAhwIB08KKfO1kBXNMDndL+m8ze0nSC5I+LSlP0n2SZGb3SzrinLsj9voLkr4q6YOS9pvZwNzvducc/ygQV5sOndKpzj7VsFUYMC4Dw8v7w/R0e4WiGwA8trC8gJ5uTArOuZ+ZWZmihXSlpE2K9mAPLK42S9LgrpK/kJQp6ZdDPtWdkv7O07BIO7V1DSrOzdCymcV+RwFSCluGeY+iGwA8tqgiXw9vOaZIxCkQYH4qUptz7h5J94zwsZohr+ckIBIgKTqf+8pFZa/32gEYmyBzuj3HnG4A8NiiigJ19oZ15FSX31EAYFJqaOvWa0damM8NTMDAlmERtjf1DEU3AHjs3BlFkqTn953wOQkATE7r6xplJl2xkKIbGC/mdHuPohsAPDY1P0tLqwr11K5Gv6MAwKRUW9eo82YUa2p+lt9RgJTzxurlFN1eoegGgAS4YmGZnt7VpAgNGgDEVX84oid3NWo1q5YDExIImALGnG4vUXQDQAJcvrBMzR292nas1e8oADCpvHzwlNq6+5nPDZyBUCDAPt0eougGgARYOXuKcjODepIh5gAQV+vqGjQ1L1PnVBX5HQVIWcGA0dPtIYpuAEiAzFBAq+ZN1VM7m/yOAgCTyrodDbqyuowtGYEzEAwYc7o9RNENAAly+cJSvXTghBpau8d138mOXjW0dqupvYc54QAwyLGWLu043sZ8buAM0dPtrZDfAQAgXdy4rEr3rNutv31gi77z4ZUyG75XJhJxWr+rUT974ZA2Hjypxrae1z+WGQxoenG2ZkzJVVVxjqYX52h6cbaqpuRoal6WcjODCkec2nv61dkbVkdPv0509KqpvUfNsT+b2nvV2tWngEV74AuzM1SUk6HCnOif0f8OqTA7QxnBgAJmMlP0UHSxFbOBP6XKohxVFeck6jECwOvW1zUqYNE3NQFMXIiebk9RdANAgkzJy9RXb1yqT/7oZf3u1WN653nT3/Txls4+/WLjIf3guQM60Nyps6cX6pbzZ2rJtELlZgbVG47oeEu3Dp/s1JFTXdp+vFV/2NGgpvaeEb7iGwqyQiotyNLUvExNzc9UZWG+nJN6+iNq7e7T7sZ2tXb1qaWrX61dfeoNj30xlYBJ71s5U5952yJVFGaP+7kAwEQ9saNBy2dNUXFupt9RgJQWDBj7dHuIohsAEuj6c6bp7Usr9Ve/3Kxn9zTp0gWlam7v1YY9zXpiR4OcnG44Z5q+fssyLZ9ZPGJv+GDdfWEda+nWyc5edfaEFQhI+Vkh5WaGlJ8VUnFuhrIzgmPO6JxTd1+0GO8LR+ScooecnJMizsnFros46aldTbrniV3a1dCm//nkpWfwdABg7Hr6w3p6d5M+ddUCv6MAKS8UMIUdRbdXKLoBIMH+z3vP1X89vV8/eeGgfvLCIWUETUumFerza6r1rmXTVV4wvt7i7Iyg5pbmaa7y4pLPzJSTGVRO5tgK9UUVBSrNz9T//ukmHTnVxVBzAAnx3N4T6uwN6+rFFX5HAVJeMGhsGeYhim4ASLCC7Az972sW6vbV89Xe06+inIwx9Wgns9WLy5URND269bj+9NK5fscBkAae2F6vquIcLarI9zsKkPJCgQALqXmI1csBwCehYEDFuZkpX3BLUmF2hi6ZX6q1W4/7HQVAGnDO6Q87GnT1kvJJ8TMU8FswYAozp9szFN0AgLhYs7RSL+w7oeYxLOwGAGdiV0O7Dp/s0lWL2SoMiIcQW4Z5iqIbABAX155VISfpD9sb/I4CYJL7w/YG5WYGdfG8qX5HASaFgLFlmJcougEAcVGan6XzZhTr2T1NfkcBMMn9YXu9LltQOq6dGQCMLBSkp9tLFN0AgLiZXpytpvZev2MAmMROdPTq5YMndfUShpYD8RIMsHq5lyi6AQBxU5KXqeYOim4A3lm/s0ERJ62upugG4oU53d6i6AYAxE1JXpZOdLCQGgDv/GF7g86dUaTywmy/owCTRjBgilB0e4aiGwAQN1PzMnWyo0/O0XADiL++cETrdzbq6sUVfkcBJhX26fYWRTcAIG6m5GWqNxxRe0+/31EATEIv7T+ptu5+5nMDcRad003R7RWKbgBA3EzNy5QUXegIAOLtD9vrVVGYpbOnF/odBZhUmNPtLYpuAEDclMSKbhZTA+CFJ3Y06KrF5TIzv6MAkwo93d6i6AYAxM3rPd1sGwYgzvY2tmtvU4euYj43EHfs0+0tim4AQNxMGSi6Oym6AcTXEzsalBUK6LIFpX5HASadgLFPt5cougEAcZMRDKggO8ScbgBx98SOBl0yf6pyMoN+RwEmnVDA1B+mp9srFN0AgLiampdJ0Q0grlq7+/TCvhO6aglDywEvBAMB5nR7KGmKbjO73cz2m1m3mT1vZheOcu1tZvaUmZ2MHY+Pdj0AIHFK8jLVzJxuAHG0vq5R/RGnqxazVRjgBVYv91ZSFN1mdoukuyXdKWmFpM2S1prZSD9ZayT9RNJqSaskHZL0qJlVeZ8WADCakrwsnejo8TsGgElk7dbjWlpVqKriHL+jAJNSMGiKOIpuryRF0S3pM5Ludc7d55zbJukTkjol3Trcxc65P3bOfcs5t8k5t0PSxxX9Xq5OWGIAwLAYXg4gnrr7wlq3o0Frzq70OwowaTGn21u+F91mlilppaTHB8455yKx16vG+GlyJWVIOjHC18gys8KBQ1LBmaUGAIykJD+T1csBxM2ze5rU0RvWdRTdgGfYp9tbvhfdkkolBSXVDzlfL2msP13/WdJRDSrch7hDUsug4/D4YwIAxqIkN5N9ugHEzSNbjmteWZ4WlOf7HQWYtKJzutkyzCvJUHSfETP7a0kfkHSzc657hMvuklQ06JiRoHgAkHZK8jLV0RtWd1/Y7ygAUlx/OKLHttVrzdmVMjO/4wCTFquXeyvkdwBJTZLCkobuAVEh6fhoN5rZ5yT9taRrnHOvjnSdc65HUs+g+yYcFgAwupL8TEnSiY5eTWfRIwBn4IX9J3Sys4+h5YDHggGxermHfO/pds71StqoQYugmdnAomgbRrrPzD4v6UuS1jjnXvI6JwBgbKbmvVF0A8CZeHRrvaYVZevcGUV+RwEmNXq6vZUMPd1SdLuw/zazlyS9IOnTkvIk3SdJZna/pCPOuTtir78g6auSPihpv5kNvP3Z7pxrT3B2AMAgJRTdAOIgEnF6ZMtxrVnK0HLAa6GAqY/Vyz2TFEW3c+5nZlamaCFdKWmToj3YA4urzZI0eGb/X0jKlPTLIZ/qTkl/52lYAMCopuZlSaLoBnBmXj3SouOt3QwtBxIgLyuk9p4+Oed4k8sDSVF0S5Jz7h5J94zwsZohr+ckIBIAYAJyMoPKzgiomaIbwBl4ZMtxleRl6oI5U/yOAkx6FYVZ6u6LqLW7X0U5GX7HmXR8n9MNAJh8puZlqbm95/QXAsAwnHNau/W4rl1SoVCQX1cBr1UUZkuSGttG2gwKZ4KfYgCAuJtWlK1jLTTcACZm+7E27Wvq0JqlDC0HEqG8IDo1rL6VN8y9QNENAIi7qik5OnKqy+8YAFLUbzYd0ZTcDF22sNTvKEBaKC+I9nQ30NPtCYpuAEDcTS/O0VGKbgATEIk4/WbTUb3j3OnKYGg5kBA5mUEVZIfo6fYIP8kAAHE3vThHx1u62fMTwLg9t69Zx1u7ddPyKr+jAGmlojBb9a30dHuBohsAEHczinPUH3EMUwMwbr955ahmleRqxaxiv6MAaaWiMEsNbfR0e4GiGwAQd9OLcySJIeYAxqWrN6zfbzmmG5dNZ69gIMHKC7LVQE+3Jyi6AQBxN704uiDLkVM03gDG7rebj6i9p1/vP3+m31GAtFNemMWcbo9QdAMA4q4gO0MF2SF6ugGMmXNO9284oNXV5ZpZkut3HCDtlBdkq6GtW86xHku8UXQDADxRVZyjIycpugGMzSuHTmnr0VZ9+OLZfkcB0lJFYZa6+yJq7e73O8qkQ9ENAPBEFduGARiHH244oJklObpiUZnfUYC0VFEYnRrWyCKocUfRDQDwxPTiHB2h6AYwBvuaOvTbzUf1kVVzFAywgBrgh/KCLEliXrcHKLoBAJ6YTk83gDH617V1KivI0ocYWg74prwg2tPNXt3xR9ENAPBE1ZQctXb3q627z+8oAJLYKwdP6qHXjukz1y5SdkbQ7zhA2srJDKogO8Re3R6g6AYAeKIqtm3YUbYNAzCC7r6wvvLbrVpcWaB3r5jhdxwg7VUUZtPT7QGKbgCAJ6YX50gSQ8wnGTO73cz2m1m3mT1vZhee5vr3mdmO2PWvmdn1icqK5Oac01/98lXVHW/TP7/nXOZyA0mgojBLDczpjjuKbgCAJ8oLspWTEdTDW46x5+ckYWa3SLpb0p2SVkjaLGmtmZWPcP0lkn4i6XuSlkt6QNIDZrY0IYGRtNp7+vXFX2/Rg5uP6uu3LNN5M4v9jgRAUkVBtnY1tKkvHPE7yqRC0Q0A8EQwYPq7d52ln790WP/1zH6/4yA+PiPpXufcfc65bZI+IalT0q0jXP+/JT3inPsX59x259yXJL0s6VOJiYtk4pzT3sZ2ffepvbr27vX69SuH9Y83L9X150zzOxqAmPedP1P7mjr0mZ9vVjjCG+bxEvI7AABg8rrlglna29ihf3hom37x0iFNK8pWKBh9v3dgIKnF/sNiZ8zeOJdKpuZl6e9vmrwduGaWKWmlpLsGzjnnImb2uKRVI9y2StGe8cHWSrpplK+TJSlr0KmCieQdzg827FdtXaMkaeivkoNHY7z1YxrlYyP/Ujr0Q27Q3W/5mBv+utN9fU3wvol+vxrzfW/+aE9fREdOdamzN6zMUEDXLCnXHW9fopkluUO/AgAfrZo/Vf/xgeW6/ccva/uxVs0qyVVWKCDnov+uo38O/HtP3aL81kvn6pIFpQn7ehTdAABPfWHNYs2emqftx1p1rKVb4Ygb9hf+gVOp2oTnZIT9juC1UklBSfVDztdLWjzCPZUjXF85yte5Q9JXJhLwtMxksXd0TEPf3DHZmy8d4SNDPjbkDaI3XTv8f8bus1E+Nvx9NuSL2Ygv3pxjpM/31o+N9fsc5boRzocCAVUV52h+eZ4unjdVuZn8Cgokq7efM03f+8gFenRbvRrbutXe0y8ze/3nZvRPG+bnKEbCTzwAgKcCAdMHL5rldwykjrv05t7xAkmH4/GJP3zxbH2YfaAB4LRWLy7X6sXDLteBCaDoBgAAY9EkKSypYsj5CknHR7jn+Divl3OuR9LrS+cO7d0FACDVsJAaAAA4Ledcr6SNkq4eOGdmgdjrDSPctmHw9THXjnI9AACTDj3dAABgrO6W9N9m9pKkFyR9WlKepPskyczul3TEOXdH7PpvSFpvZp+V9JCkD0g6X9KfJTg3AAC+oegGAABj4pz7mZmVSfqqoouhbZK0xjk3sFjaLEmRQdc/a2YflPQPkv5J0i5JNznntiQ0OAAAPqLoBgAAY+acu0fSPSN8rGaYc7+Q9AuPYwEAkLSY0w0AAAAAgEcougEAAAAA8AhFNwAAAAAAHqHoBgAAAADAIxTdAAAAAAB4hKIbAAAAAACPUHQDAAAAAOCRtN6nu7W11e8IAAC8CW3T8HguAIBkM9a2yZxzHkdJPmZWJemw3zkAABjFDOfcEb9D+I02GwCQAkZts9O16DZJ0yW1efQlChT9BWGGh19jMuF5jR3Panx4XmPHsxq7RDyrAklHXTo20kPQZicVntX48LzGjmc1PjyvsUuKNjsth5fHHohnvQfR3w8kSW3OOcbDnQbPa+x4VuPD8xo7ntXYJehZ8f8ghjY7efCsxofnNXY8q/HheY1dsrTZLKQGAAAAAIBHKLoBAAAAAPAIRbc3eiTdGfsTp8fzGjue1fjwvMaOZzV2PKvJhf+fY8ezGh+e19jxrMaH5zV2SfGs0nIhNQAAAAAAEoGebgAAAAAAPELRDQAAAACARyi6AQAAAADwCEU3AAAAAAAeoegGAAAAAMAjFN0TZGa3m9l+M+s2s+fN7MLTXP8+M9sRu/41M7s+UVmTwXiel5ndZmZPmdnJ2PH46Z7vZDLev1uD7vuAmTkze8DjiEljAv8Oi83sm2Z2zMx6zGxnOv1bnMDz+rSZ1ZlZl5kdMrOvm1l2ovL6xcyuMLMHzexo7N/UTWO4p8bMXo79vdptZh/1PinGijZ77Givx4c2e+xos8eO9nrsUqXNpuieADO7RdLdiu75tkLSZklrzax8hOsvkfQTSd+TtFzSA5IeMLOlCQnss/E+L0k1ij6v1ZJWSTok6VEzq/I+rb8m8KwG7psj6V8lPeV1xmQxgX+HmZIekzRH0nslVUu6TdKRROT12wSe1wclfS12/RJJH5N0i6R/Skhgf+Up+nxuH8vFZjZX0kOS1klaJunfJX3XzK7zKB/GgTZ77Givx4c2e+xos8eO9nrcUqPNds5xjPOQ9Lykewa9Dij6Q+CvR7j+Z5J+N+Tcc5L+0+/vJRmf1zD3ByW1SvoTv7+XZHxWsefzjKI/ZL8v6QG/v49kfFaSPiFpj6QMv7OnyPO6R9Ifhpz7N0lP+/29JPi5OUk3neaaf5a0Zci5n0p6xO/8HLTZXj6rYe5Pm/Z6os+LNntszyqd22za6zN6dknbZtPTPU6xd95WSnp84JxzLhJ7vWqE21YNvj5m7SjXTxoTfF5D5UrKkHQi7gGTyBk8qy9LanDOfc/bhMljgs/qXZI2SPqmmdWb2RYz+6KZBT0P7LMJPq9nJa0cGNJmZvMkXS/p996mTUlp+zM+2dFmjx3t9fjQZo8dbfbY0V4nhC8/40NefvJJqlTRdynrh5yvl7R4hHsqR7i+Mr7RktJEntdQ/yzpqN76D2SyGfezMrPLFH23fJmnyZLPRP5ezZN0laQfKdoYLZD0LUV/QbzTm5hJY9zPyzn3YzMrlfS0mZmi7cV/OufSZbjaeIz0M77QzHKcc10+ZEIUbfbY0V6PD2322NFmjx3ttfd8abPp6UZSM7O/lvQBSTc757r9zpNMzKxA0g8k3eaca/I7TwoISGqQ9GfOuY3OuZ9J+kdFh7BhCDOrkfRFSZ9UdE7ZuyXdYGZf8jEWgCRFez062uxxo80eI9rr1EBP9/g1SQpLqhhyvkLS8RHuOT7O6yeTiTwvSZKZfU7SX0u6xjn3qjfxksp4n9V8RRcYeTD6xqak2BtpZtYvqdo5t8eTpP6byN+rY5L6nHPhQee2S6o0s0znXG/8YyaNiTyvv5f0A+fcd2OvXzOzPEn/z8z+MTbcDVEj/YxvpZfbd7TZY0d7PT602WNHmz12tNfe86XNpqd7nGL/yDdKunrgnJkFYq83jHDbhsHXx1w7yvWTxgSfl8zs85K+JGmNc+4lr3Mmgwk8qx2SzlF0mNrA8Vu9sRrjIQ/j+mqCf6+ekbQgdt2ARZKOTeLGW9KEn1eupKEN9cAvPyYMlrY/45MdbfbY0V6PD2322NFmjx3tdUL48zPe71XmUvFQdBn+bkkfUXRp/u9IOimpIvbx+yXdNej6SyT1SfqsovMx/k5Sr6Slfn8vSfq8viCpR9J7FJ13MXDk+/29JNuzGub+7yt9VkId79+rmYquqvt/FW24b1B0Ds/f+P29JOnz+rvY8/qApLmKNki7Jf3M7+8lAc8qX2/8Uuwk/WXsv2fFPn6XpPsHXT9XUoek/xP7Gf9JSf2SrvP7e+Ggzfb4WaVtez2R5zXM/bTZtNnxeFZp217Hvv+UaLN9f1Cpekj6lKQDscbmeUkXDfpYraTvD7n+fZLqYtdvkXS9399Dsj4vSftj/2iGHn/n9/eRbM9qmHvTpgGfyLNSdGXK52KN2R5F50AF/f4+kvF5KTr96CuxhrtL0kFJ35RU7Pf3kYDnVDPCz6Dvxz7+fUm1w9zzSuzZ7pH0Ub+/D443/f+hzfbgWaV7ez2Rv1tD7qXNHuVZpXObTXs9rmeVEm22xb4wAAAAAACIM+Z0AwAAAADgEYpuAAAAAAA8QtENAAAAAIBHKLoBAAAAAPAIRTcAAAAAAB6h6AYAAAAAwCMU3QAAAAAAeISiGwAAAAAAj1B0AwAAAADgEYpuAAAAAAA8QtENYMLM7I/MrMvMpg06d5+ZvWpmRX5mAwAAUbTXgL8ougGciZ9K2inpi5JkZndKukbS251zLX4GAwAAr6O9BnwU8jsAgNTlnHNm9jeSfmlmxyX9f5Iud84d8TkaAACIob0G/GXOOb8zAEhxZvaypLMlvc05t97vPAAA4K1orwF/MLwcwBkxszWSFksKSqr3OQ4AABgG7TXgH3q6AUyYma2QVCvpzyV9VFKrc+59fmYCAABvRnsN+Is53QAmxMzmSHpI0j85535iZnslbTCzFc65l/1NBwAAJNprIBnQ0w1g3MysRNKzkmqdc58YdP4hSUHn3BrfwgEAAEm010CyoOgGAAAAAMAjLKQGAAAAAIBHKLoBAAAAAPAIRTcAAAAAAB6h6AYAAAAAwCMU3QAAAAAAeISiGwAAAAAAj1B0AwAAAADgEYpuAAAAAAA8QtENAAAAAIBHKLoBAAAAAPAIRTcAAAAAAB6h6AYAAAAAwCMU3QAAAAAAeISiGwAAAAAAj1B0AwAAAADgEYpuAAAAAAA8EvI7gB/MzCRNl9TmdxYAAIZRIOmoc875HcRvtNkAgCR32jY7LYtuRRvvw36HAABgFDMkHfE7RBKgzQYAJLtR2+x0LbrbJOnQoUMqLCz0OwsAAK9rbW3VzJkzJXp2B9BmAwCS0ljb7HQtuiVJhYWFNOAAAKQA2mwAQKpiITUAAAAAADxC0Q0AAAAAgEcougEAAAAA8AhFNwAAAAAAHqHoBgAAAADAIxTdAAAAAAB4hKIbAAAAAACPUHQDAAAAAOAR34tuM7vDzF40szYzazCzB8ys+jT3fNTM3JCjO1GZAQBIR2Z2hZk9aGZHY23vTWO4p8bMXjazHjPbbWYf9T4pAADJw/eiW9KVkr4p6WJJ10rKkPSomeWd5r5WSdMGHbO9DAkAAJQnabOk28dysZnNlfSQpHWSlkn6d0nfNbPrPMoHAEDSCfkdwDm3ZvDr2DvgDZJWSnpy9FvdcQ+jAQCAQZxzD0t6WJLMbCy3fELSPufcZ2Ovt5vZZZL+UtJaT0ICAJBkfC+6h1EU+/PEaa7LN7MDivbWvyzpi865rcNdaGZZkrIGnSo445QxjW09uuifHo/XpxvWGH+xmdjn9uwzSx7GVmYwoMKcDE0rytaC8nxdtrBM1y6pUE5m0LsvCgAYr1WShjaSaxXt8R6Wl2323z7wmn78/MF4fbq3SNX2WvKuzTYz5WeFVJyboXmleTprepHeee40LayI2/9WAEh6SVV0m1lA0Yb4GefcllEurZN0q6RXFS3SPyfpWTM72zl3eJjr75D0lTjHlSTlZ4X0Dzed48WnliQ5Oe8+t3ef2sPUkpxTT39ELV19OnyyS68dadXPXzqsvMygPnddtT56yRxPf/EBAIxZpaT6IefqJRWaWY5zrmuYezxrs991XpXOmlZ0+gsnIFXba8nbNjsScWrv6VdTe4/2Nnbo+8/s03/8YZcunFuiu99/nmZMyfXwqwNAcjDn9U/ycTCzb0t6u6TLRiieR7ovQ9J2ST9xzn1pmI8P96754ZaWFhUWFp5haiSDA80d+u5T+/SD5w5ozdmV+voty+j1BpCSWltbVVRUJElFzrlWv/OMxMycpJudcw+Mcs1OSfc55+4adO56Red55w5XdNNmT249/WGt29Ggf3hou9q6+/WNDyxTTXW537EAYELG2mYnw0JqkiQzu0fSOyStHk/BLUnOuT5Jr0haMMLHe5xzrQOHpLYzDoykMntqnv7+pqX6zodXqnZng/7x99v8jgQAkI5LqhhyrkJS6wi93LTZk1xWKKg1S6fpof/vci2fVaxP/uhlHWju8DsWAHjK96Lbou6RdLOkq5xz+ybwOYKSzpF0LN75kFquO7tSf3PDWfrhcwf1xI6hIxoBAAm2QdLVQ85dGzuPNFaUm6F7PrhCpflZ+sufbVJ/OOJ3JADwjO9Ft6LbhX1I0gcltZlZZezIGbjAzO43s8FD075sZm8zs3lmtkLSDxXdMuy7iQ6P5POhi2ZpdXWZPv/LV9XS1ed3HACYNMws38yWmdmy2Km5sdezYh+/y8zuH3TLf0qaZ2b/x8wWm9knJb1f0tcTmxzJKD8rpK/fcp42HTqle58ad58LAKSMZCi6/0LRxdBqFe2pHjhuGXTNLEX34h4wRdK9is7j/r2kQkmXOOcYUwyZmb72nnPV2tXv6Sq1AJCGzld0Otcrsdd3x/77q7HX0xRtsyVJsdFrNyjau71Z0mclfdw5x3ZhkCStnF2iD108W//vyT3q6g37HQcAPJFUC6klipkVSmphUZbJ7Qu/fFXr6hr09BeuUmYoGd5fAoDTS5WF1BKFNnvyO9jcqZp/Xaev3rhUH7p4tt9xAGDMUm4hNSDebrtirhraevSbTUf8jgIAAEYwa2qu1iyt1Pee3qdwJP06gwBMfhTdmLQWlBfo6sXluvepvUrHER0AAKSK2y6fp31NHXp8O4ugAph8KLoxqf3ppXO1s75dmw6d8jsKAAAYwfJZU3TezGL94qVDfkcBgLij6Maktmr+VJUXZOk3m476HQUAAIzi5mXTVVvXqJMdvX5HAYC4oujGpBYMmN553nT97tWj7AEKAEASu+Hc6Yo4p4e3HPc7CgDEFUU3Jr2bllWpqb1Xz+xp9jsKAAAYQVlBli5dUMoCqAAmHYpuTHpLqwo1ryxPv3mFRhwAgGT2rvOm64X9J3SspcvvKAAQNxTdmPTMTDeeV6VHt9Wrpz/sdxwAADCC65ZWKiMY0EOvHvM7CgDEDUU30sKapZVq7+nXBoaYAwCQtAqzM3Tp/KlsHQZgUqHoRlpYVJGvWSW5emwbjTgAAMnsmrMq9OL+kzrVySrmACYHim6kBTPT286q0GPb6hWJOL/jAACAEVy9uELhiNO6uga/owBAXFB0I21ce1aFGtp69OqRFr+jAACAEVQWZevcGUV6fBtFN4DJgaIbaWPl7CkqycvUo1vZ/xMAgGR27ZIK1dY1sAAqgEmBohtpIxQM6KrF5SzOAgBAkrvmrAp19Ib1/N4TfkcBgDNG0Y20srq6XDvr23X0FPt/AgCQrBZXFqiyMFvrdzb6HQUAzhhFN9LKZQtLFQyYautoxAEASFZmpisXlVF0A5gUKLqRVopyMrRy1hTVsiIqAABJ7crqMu1uaNfhk51+RwGAM0LRjbRzZXWZntndpN7+iN9RAADACC5dEB2d9uTOJr+jAMAZoehG2qmpLlNHb1gv7WdxFgAAklVRToaWzyzW+p2MTgOQ2ii6kXbOmlao8oIs1TJPDACApHblojI9s7tZfWFGpwFIXRTdSDtmpprqMq3bwTvnAAAksyury9Te06+XD5z0OwoATBhFN9JSTXW5djW06whbhwEAkLSWTi9SSV4mq5gDSGkU3UhLA4uzsIo5AADJKxAwXbGwlKIbQEqj6EZaGtg6bN0OGnEAAJLZldVl2nq0VQ1t3X5HAYAJoehG2qpZXKZn9zSppz/sdxQAADCCyxeWSZKeYuswACmKohtpq2ZRuTp7w3ppP4uzAACQrErzs7S0qlBP7mJ0GoDURNGNtLVkWoEqCrNYxRwAgCR35aIyPbmzUeGI8zsKAIwbRTfSlpmpZlE5+3UDAJDkrlxUrpOdfdpypMXvKAAwbhTdSGs11WXa3dCuQyc6/Y4CAABGsHxWsfKzQnqSN8oBpCCKbqS1SxeWKhQwersBAEhiGcGAVs2fqqd2sZgagNRD0Y20VpidoRWzp2g9+3UDAJDUrlhUppcPnlRbd5/fUQBgXCi6kfZWV5frmd3NbB0GAEASu2JhqfojTs/uafY7CgCMC0U30l5NdZm6+sJ6Yd8Jv6MAAIARzJ6ap9lTc/UUW4cBSDEU3Uh7iysLVFmYrXU7aMQBAEhmVyws05M7mdcNILVQdCPtmZlWLy5T7U7mdQMAkMyuWFSmgyc6tb+pw+8oADBmFN2ApJrqcu1t7NCBZhpxAACS1cXzShQKmJ5kiDmAFELRDUi6dEGpMoKmdTvo7QYAIFkVxHYdYYg5gFRC0Q1Iys8K6cK5JVpXxzvnAAAksysXlWnDnib19kf8jgIAY0LRDcSsri7Xhr3N6upl6zAAAJLV5QtL1dEb1ssHT/odBQDGhKIbiFm9uFy9/RE9u4chawAAJKul04tUkpepJ3cyOg1AaqDoBmLmleZpVkmu1tUxrxsAgGQVCJguW1Cqp3bxJjmA1EDRDcSYmVZXl2ndjkY55/yOAwAARnDFojJtOdqi5vYev6MAwGlRdAODrF5criOnurS7od3vKAAAYASXLyyVc9LTu+ntBpD8KLqBQS6eN1XZGQE9wdZhAAAkrYrCbC2uLGDrMAApgaIbGCQ7I6hL5pcyrxsAgCR3xaIyPbWLKWEAkh9FNzDE6uoyvbT/pFq7+/yOAgAARnD5wlI1tPVox/E2v6MAwKgouoEhaqrL1R9xeppVUQEASFoXzClRdkaArcMAJD2KbmCImSW5Wlier3XM6wYAIGllZwR10dypbB0GIOlRdAPDWL24XLU7GxWJME8MAIBkdcWiMr2w/4S6esN+RwGAEVF0A8OoqS5TY1uPth1r9TsKAAAYwRULS9XbH9Fz+5r9jgIAI6LoBoZxwZwS5WeF2DoMAIAktqA8X9OKsvUUW4cBSGIU3cAwMoIBXb6QrcMAAEhmZqYrFpbpyV0spgYgeVF0AyNYXV2uTYdOqbm9x+8oAABgBJcvKtXuhnYdPdXldxQAGBZFNzCC1YvLJUnr6nj3HACAZHXZglIFTGwdBiBpUXQDIygryNKymcV6fFu931EAAMAIinMzde6MYq2n6AaQpCi6gVFcs6RCT+5qVHcfW5EAAJCsVleX6+ldTeoLR/yOAgBvQdENjOLasyrU2RvWhr1sRQIAQLJavbhMbT392njgpN9RAOAtfC+6zewOM3vRzNrMrMHMHjCz6jHc9z4z22Fm3Wb2mpldn4i8SC8Ly/M1qySXIeYAEGNmt5vZ/lj7+7yZXXia6z9tZnVm1mVmh8zs62aWnai8SA9LpxepND+TXUcAJCXfi25JV0r6pqSLJV0rKUPSo2aWN9INZnaJpJ9I+p6k5ZIekPSAmS31PC3SipnpmiUVenx7vZxzfscBAF+Z2S2S7pZ0p6QVkjZLWmtm5SNc/0FJX4tdv0TSxyTdIumfEhIYaSMQMF25qFy1O5jXDSD5+F50O+fWOOe+75zb6pzbLOmjkmZJWjnKbf9b0iPOuX9xzm13zn1J0suSPjXcxWaWZWaFA4ekgjh/G5jErjmrXPWtPdpypNXvKADgt89Iutc5d59zbpukT0jqlHTrCNdfIukZ59yPnXP7nXOPKvqm+Yi947TZmKjVi8tUV9/G1mEAko7vRfcwimJ/nhjlmlWSHh9ybm3s/HDukNQy6Dh8JgGRXi6YU6LC7JAe284QcwDpy8wyFX1D/PX21zkXib0eqf19VtLKgSHoZjZP0vWSfj/Kl6LNxoRcvqBMwYCplq0+ASSZpCq6zSwg6d8VfVd8yyiXVkoaWgHVx84P5y5Fi/mBY8aZJUU6yQgGtHpxOfO6AaS7UklBjaP9dc79WNKXJT1tZn2S9kiqdc6NNrycNhsTUpSboZWzpjCvG0DSSaqiW9G53UslfSCen9Q51+Ocax04JLXF8/Nj8rtmSYW2HWvVEYasAcCYmVmNpC9K+qSic8DfLekGM/vSSPfQZuNM1Cwu0zO7m9TTz1afAJJH0hTdZnaPpHdIWu2cO91QsuOSKoacq4idB+LuyuoyhQKmPzDEHED6apIU1vja37+X9APn3Hedc685536taBF+R2x0GxBXNYvK1dkb1ov72DoMQPLwvcGzqHsk3SzpKufcvjHctkHS1UPOXRs7D8RdYXaGLp43VY8xxBxAmnLO9UraqEHtb6xwvlojt7+5kiJDzg10QVq8MwJLphWoojCLIeYAkorvRbeiQ8o/JOmDktrMrDJ25AxcYGb3m9ldg+75hqQ1ZvZZM1tsZn8n6XxJ9yQyONLLNUvK9dzeZrV09fkdBQD8crek28zsI2a2RNK3JeVJuk8atr1+UNJfmNkHzGyumV2raO/3g845xv8i7sxMq6vLKboBJJVkKLr/QtGFUmolHRt03DLomlmSpg28cM49q2iR/meK7hH6Xkk3nWbxNeCMvO3sSvWFndbtoCEHkJ6ccz+T9DlJX5W0SdIySWuccwPDgN7UXkv6B0n/Fvtzm6TvKbrbyJ8nJjHSUU11ufY2duhAc4ffUQBAkhTyO4Bz7rTDy5xzNcOc+4WkX3iRCRjO9OIcnTezWI9sOa6bllf5HQcAfOGcu0cjjCwb2l475/ol3Rk7gIS4dMFUZQSjW4d95JI8v+MAQFL0dAMpY83Zlard2aCuXkZFAgCQjAqyM3TBnBKGmANIGhTdwDhcd3aFuvsiWr+z0e8oAABgBKury7VhT7O6+3iTHID/KLqBcZhXlq/qigI9upXd6QAASFarF5eppz+iDXub/Y4CABTdwHhdt7RSj2+vV2//0F1wAABAMphflq8ZU3JUy+KnAJIARTcwTmvOrlRrd7+e491zAACS0htbhzXKOed3HABpjqIbGKcl0wo0qyRXjzDEHACApLV6cZkOnujUnka2DgPgL4puYJzMTGuWVurRrfUKR3j3HACAZLRqXqmyQgE9saP+9BcDgIcouoEJuO7sSjW19+iVgyf9jgIAAIaRkxnU5QtL9dg2im4A/qLoBiZg+cxilRdk6eEtDDEHACBZXXtWhTYeOKnm9h6/owBIYxTdwAQEAtEh5g+/dkwRhpgDAJCUrlpcISdpXV2j31EApDGKbmCCbjhnmo62dOuVQ6f8jgIAAIZRVpClZTOL9dg2RqYB8A9FNzBBF8wpUXlBlh569ZjfUQAAwAiuWVKhJ3c2qbsv7HcUAGmKohuYoEDAdP050/R7hpgDAJC03nZWhbr6wtqwp9nvKADSFEU3cAbece40HW/t1kZWMQcAICktKM/X7Km5emw7q5gD8AdFN3AGVsyaosrCbIaYAwCQpMxM1yyp0OPb6hmZBsAXFN3AGQgETDecO00PvXZMYRpyAACS0rVnVaihrUevHWnxOwqANETRDZyhG86dpsa2Hr24/4TfUQAAwDDOnz1FRTkZepwh5gB8QNENnKHlM4tVVZzDEHMAAJJUKBjQVYvL9dg2im4AiUfRDZwhM9P151Tq4S3H1B+O+B0HAAAM45olFdpxvE2HTnT6HQVAmqHoBuLgHedOV1N7r57fxxBzAACS0ZXVZcoMBhhiDiDhKLqBODh3RpFmleTqt5uO+h0FAAAMIz8rpIvnT6XoBpBwFN1AHJiZblw2Xb/fckzdfWG/4wAAgGFcu6Rcz+89oZauPr+jAEgjFN1AnNy4rEpt3f2qrWvwOwoAABjG1Usq1B9xtNUAEoqiG4iTBeX5WlpVqAdeYYg5AADJaHpxjpZWFerx7RTdABKHohuIo5uWVemJHQ0MWwMAIElds6RCtTsa1NPPdDAAiUHRDcTRO8+brr5IRA+/xp7dAAAkozVLK9XW069n9zT7HQVAmqDoBuKoojBbl84v1QObjvgdBQAADKO6okBzpubqkdeO+x0FQJqg6Abi7MZl0/X8vhM61tLldxQAADCEmWnN0ml6bHu9+sMRv+MASAMU3UCcrVlaqcxggD27AQBIUmuWVupER69e2H/C7ygA0gBFNxBnBdkZumZJhR6g6AYAICmdN6NI04uytXYLQ8wBeI+iG/DAjcuma/uxVu043up3FAAAMISZ6bqllXpk63FFIs7vOAAmOYpuwAM11eUqycvUrzYe9jsKAAAYxpqzK1Xf2qNNh0/5HQXAJEfRDXggMxTQjcum69evHFEfi7QAAJB0zp9TotL8TD3CEHMAHqPoBjzyvpUz1dTeq9q6Rr+jAACAIYIB07VnVeqRLcflHEPMAXiHohvwyFnTC3X29EL94qVDfkcBAADDePvSSh080altx1iDBYB3KLoBD7135Qw9saNBze09fkcBAABDrJo/VYXZIYaYA/AURTfgoRuXVclMbB8GAEASyggGdO1Zlfr9a8cYYg7AMxTdgIdK8jJ19eIK/eKlQzTmAAAkoXecO017GjtUV9/mdxQAkxRFN+Cx950/QzuOt2nrUeaLAQCQbC5dUKqinAz9bvMxv6MAmKQougGPXbmoTKX5Wfole3YDAJB0MkMBXXd2hR5iiDkAj1B0Ax4LBQN694oqPbDpiLr7wn7HAQAAQ9xw7nTta+pgVBoAT1B0AwlwywUzdaqzT2u3sjoqAADJ5pL5UzUlN0MPvcYQcwDxR9ENJMD8snxdNLdEP37+oN9RAADAEBnBgNYsrdRDrzLEHED8UXQDCfLBi2bp+X0ntKex3e8oAABgiBvOma6DJzr12pEWv6MAmGQouoEEue7sSk3JzdBP6O0GACDpXDyvRFPzMvXQqwwxBxBfFN1AgmRnBPWeFTP0q5cPs6AaAABJJhQbYv47hpgDiDOKbiCB/uiiWTrJgmoAACSld5w7XUdOdWnToVN+RwEwiVB0AwnEgmoAACSvC+eWqKwgS7/dfNTvKAAmEYpuIMFYUA0AgOQUDJjece40/e7VYwpHGGIOID4ouoEEY0E1AACS103LqtTY1qMNe5r9jgJgkqDoBhIsOyOo950/U7/YeFhdvSyoBgBAMjl3RpHmTM3VbzYd8TsKgEmCohvwwYcumq3W7j79djMNOgAAycTM9K5lVXpky3F2GwEQFxTdgA9mTc3VVdXl+v6zB9iWBACAJHPjsulq6+nXuh0NfkcBMAlQdAM++cglc7T9WKteOnDS7ygAAGCQ+WX5OqeqSA8wxBxAHFB0Az65bEGp5pXm6fvP7vc7CgAAGOLGZdO1bkejWrr6/I4CIMVRdAM+CQRMf7JqttZuOa7jLd1+xwEAAIO887zp6otE9MiWY35HAZDifC+6zewKM3vQzI6amTOzm05zfU3suqFHZYIiA3HznpUzlBUK6MfPH/A7CgCMiZndbmb7zazbzJ43swtPc32xmX3TzI6ZWY+Z7TSz6xOVF5ioisJsXTJ/qn6z6ajfUQCkON+Lbkl5kjZLun2c91VLmjboYKULpJyC7Ay9Z+UM/fiFg+rpZ4VUAMnNzG6RdLekOyWtULT9Xmtm5SNcnynpMUlzJL1X0bb7NklMlEVKuPG8Km3Y28yINABnxPei2zn3sHPub51zvx7nrQ3OueODjognAQGP/cmq2Wpq79XDrx33OwoAnM5nJN3rnLvPObdN0ickdUq6dYTrb5VUIukm59wzzrn9zrn1zrnNCcoLnJE151QqMxhgz24AZ8T3ovsMbIoNVXvMzC4d7UIzyzKzwoFDUkGCMgKntaC8QJcvLNV3n97L9mEAklas13qlpMcHzsXe8H5c0qoRbnuXpA2Svmlm9Wa2xcy+aGbBUb4ObTaSRmF2ht52dqV+9fJh2mgAE5aKRfcxRd9Zf0/sOCSp1sxWjHLPHZJaBh2HvQ4JjMfHL5+nLUda9fy+E35HAYCRlEoKSqofcr5e0kjrqsxTdFh5UNL1kv5e0mcl/e0oX4c2G0nl3SuqtLO+XVuOtPodBUCKSrmi2zlX55z7jnNuo3PuWefcrZKelfSXo9x2l6SiQceMBEQFxuyKhaVaVJGv7z611+8oABBPAUXXXPmzWLv9M0n/qOib5yOhzUZSuXxBqcoKsvSrl3n/B8DEpFzRPYIXJC0Y6YPOuR7nXOvAIaktcdGA0zMzffyyeXp8e4P2Nrb7HQcAhtMkKSypYsj5CkkjLUpxTNJO59zglSK3S6qMDVd/C9psJJtQMKCbl1fpN5uOqLefJYQAjN9kKbqXKdqwAynrxuXTVZqfpe89vc/vKADwFs65XkkbJV09cM7MArHXG0a47RlJC2LXDVgk6Vjs8wEp4T0rZuhkZ5/W1bFZDoDx873oNrN8M1tmZstip+bGXs+KffwuM7t/0PWfNrMbzWyBmS01s3+XdJWkbyY8PBBHWaGg/mTVbP1y42Gd6OB3UQBJ6W5Jt5nZR8xsiaRvK7r1532SZGb3m9ldg67/tqKrl3/DzBaZ2Q2SvijabKSY6soCLa0q1K82MsQcwPj5XnRLOl/SK7FDijbor0j6auz1NEmzBl2fKenfJL0mab2k8yRd45z7Q0LSAh760MWzZSb96LkDfkcBgLeIzcn+nKJt9CZFR5qtcc4NLK42S9F2e+D6Q5Kuk3SBpFcl/Yekb0j6WsJCA3HynhUztK6ugTfGAYybpeP2B7EtSFpaWlpUWFjodxzgTf7m169p7dZ6Pf2F1crOGHFXHQCTVGtrq4qKiiSpKDanOa3RZiNZNLf36KJ/+oO+9I6z9JFL5vgdB0ASGGubnQw93QAGufWyuWru6NEDrxzxOwoAAIiZmp+l1YvLWcUcwLhRdANJZn5Zvq47q1LfeXKvwpH0G4kCAECyes+KGXr1cIt2HE/7QSgAxoGiG0hCn1w9X/uaOvTwFhblBwAgWVy9pFyl+Zn62YuH/I4CIIVQdANJ6NwZxbpsQam+tW6P0nHdBQAAklFGMKB3r5ihX79yRD394dPfAAAaZ9FtZkVm9v/MbLeZbTezaae/C8BEfLJmvrYda9X6nY1+RwEAADHvP3+mTnX26bFt9ae/GAA0/p7ub0o6R9LnJc2WlCNJZvZ1M/tUnLMBaW3V/Kk6b2axvlW7x+8oAAAgZkF5vlbOnsIQcwBjNt6i++2SPumc+x9Jg8fUrJX0kbilAiAz0ydr5uuFfSe08cAJv+MAAICYW86fqad3N+nwyU6/owBIAeMtuk1S2zDnd0laeOZxAAx27ZIKLSzP17fW0dsNYGLMrMrMqvzOAUwmN5w7TbkZQf1yI9uHATi98RbdD0v642HO50litScgzgIB0yeunK8/7GjQ1qMtfscBkELM7FIz2yfpoKSDZlZvZv9sZoV+ZwNSXV5WSO88b7p+8dJhRdjeE8BpjLfovkPS7Wb2FUV7vZ2ZZUv6kqSX4x0OgHTjsumaPTVX//GHXX5HAZBaviNpu6QLJFVL+itJ10h6mZ5v4My9/4KZOnKqS8/safI7CoAkN66i2zl3UNIlsSNX0guSWiRdKekLcU8HQKFgQJ9avUBrt9Zr29FWv+MASB3zJX3aOfeyc263c+5+SedLekXSv/uaDJgEls8s1sLyfP2UBdUAnMZE9unulfQDRRdOu1PSjZKqnXMvxTMYgDfcvLxKs0ro7QYwLtsllQ8+4Zxzkr4saY0viYBJxMz0gQtn6dGtx9XY1uN3HABJbLz7dP8vSXslfUvSPZL+Q9JXJc2MfzQAAwZ6ux/Zelzbj9HbDWBMvi/p/5rZ0Da6SBI/SIA4eO+KGQqY6ecv0dsNYGTj7en+kqSvSSp2zhVJWiTpaUkbzOyyeIcD8IabV1RpZkkOvd0AxurfJZ0naZeZ/djMPm9md0j6nqTP+5oMmCSKcjP0zvOm6ycvHFSYBdUAjGC8RXe+pO875yKSFJsj9hlJd0n6t3iHA/CGjFhv98NbjmvHcTqpAJzWNElvV3Q4uSR9VNHRaQslfd7MfhgrxBlqDpyBD108W4dPdunJnY1+RwGQpMZbdL8qadUw538u6dwzjwNgNO9eMUMzpuToG4/T2w1gdM65eufcWufc/3HOfdA5d5akAkmXKjpF7JSkd0n6qY8xgZR33owiLa0q1A+fO+B3FABJarxF92cl/ZuZ3WJmNuj8RZKoAgCPZQQD+l9XLdTDW45ryxH27QYwPs65bufci865e51zn3LOXeacK/Y7F5DKzEx/fNFsPVHXoMMnO/2OAyAJjXfLsKcVHZ72L5LqzexRM6uV9HWxZRiQEO9eUaV5pXn610fr/I4CAAAk3bhsuvIzQ/rpCyyoBuCtxr1lmHPu94rOB/uopE2S+mIf+p2ZNZrZE2b27/EKCODNQsGAPvO2Raqta9QL+074HQcAgLSXmxnSu1dU6acvHlJvf8TvOACSzET26ZZzrsc593vn3Oedc9c650olzZF0q6RaSbPjFxHAUNcvnaazphXqX9buUHTbXQAA4Kc/vni2mtp79Oi2435HAZBkJlR0D8c5d8g596Bz7qvOuZvj9XkBvFUgYPqrNdV6cf9JrWe1VAAAfLeookAXzinRj5476HcUAEkmbkU3gMSqWVSmC+ZM0b+srVOEvUEBAPDdH188Sxv2Nmt3Q7vfUQAkEYpuIEWZmf7qusXaerRVD29hKBsAAH5bs7RSU/My9aPn2T4MwBsouoEUduHcEtVUl+lf1u5g4RYAAHyWFQrqfefP1K82HlZXb9jvOACSBEU3kOLuePsSHTzRqR/zrjoAAL774IWz1NbTrwc3H/U7CoAkQdENpLjqygK9b+VMfeMPu9Ta3Xf6GwAAgGdmTc3VVdXluu/Z/ewwAkASRTcwKXzmbYvU3RfRt9bt8TsKAABp708vnavtx1r13N4TfkcBkAQouoFJoKIwW7ddMU//9cw+HTnV5XccAADS2qULpmpRRb7ue2af31EAJAGKbmCS+PMr5qkwO0P/urbO7ygAAKQ1M9OfXjpXj22v18HmTr/jAPAZRTcwSeRlhfSZaxfp168c0WuHW/yOAwBAWrtpWZWKcjL03xv2+x0FgM8ouoFJ5P3nz1B1RYHufHAri7cAAOCjnMygPnjhLP38xUNq7+n3Ow4AH1F0A5NIKBjQV955ll46cFK/ZasSAAB89eFVs9XZF9YvXzrkdxQAPqLoBiaZSxaUas3Zlbrr9zvU2cs76wAA+GVaUY6uP2ea7nt2vyIRRqAB6YqiG5iE/uaGJTrR2csWYgAA+OxPL52jA82demJHg99RAPiEohuYhP7/9u48To66zv/4+1PV13TPkUwmF7kTCIcEIQgaZCEiuoiigqugsoIKiKL7W8Ufoq4gXqzuiu4uIC7swuIq8lNXBFkXjQKLEkDuOzGBaG5yMZNkrj6+vz+qJwxjZuiZdHXVdL+ej0c9po+qmU9/5/jMu6vqW7Pas/rIcfP1r/c8x6ypAABEaPHsiTp81gRdfy+XDwMaFaEbqFMfXbpAk3IpfeX2p6MuBQCAhvbB18/V71Zt07ObuqIuBUAECN1AncqmEvrsyQfrl09v1l0rOKQNAIConLxouqa2pnXD79ZEXQqACBC6gTp2ymHTdcyCSbrkZ0+pN1+MuhwAABpS0vf0gSVz9dNH1mvbrr6oywFQY4RuoI6Zmb78zkO1qbNXV925KupyAABoWO87erY8M924/I9RlwKgxgjdQJ1bMLlZ5y9doGvuXq1VL+yKuhwAABrSxFxKpx81SzcuX8MlPYEGQ+gGGsDHli7QfhOa9IVbnpRzXCcUAIAofPjYeerqLehHD66LuhQANUToBhpAJunrS+84VMuf26afPboh6nIAAGhIs9qzeuui6br2nudUKJaiLgdAjRC6gQZx/MLJetth0/Xlnz+tHbv7oy4HAICGdN5x87VuR49+8eSmqEsBUCOEbqCBXHLKISqUnL70c67dDQBAFA6d0aZj9+/Qd/93Nad8AQ2C0A00kCktGX3hbYfop4+s153Pcu1uAACi8JHj5+vJ9V26d/W2qEsBUAOEbqDBvGvxDB2/cLI+99MntLM3H3U5AAA0nGP379Ah01t1zd2roy4FQA0QuoEGY2b66qmHqqsnr7//xbNRlwMAQMMxM52/dIHu+cNWPb7uxajLARAyQjfQgGZOzOozbzlI37//T1rOoW0AANTcWxdN17yOnK78zaqoSwEQMkI30KDOfO0cHT23XRf95DHt6itEXQ4AAA3F90wfPX6Bfvn0Zq3YtDPqcgCEiNANNCjPM/3ju1+t7bv69eXbmM0cAIBae+cRMzRjQpOuvou93UA9I3QDDWz2pKwuOeUQ3fzgWv3q6c1RlwMAQENJJTx95Pj5uu2xDVqzdXfU5QAICaEbaHDvec0snXjwFF38k8e1dVdf1OUAANBQ3vOaWWrPpfWdu5jJHKhXhG6gwZmZLj/tMEnSxT95Qs65iCsCAKBxZJK+zjtunv7rkXXa8GJP1OUACAGhG4Amt6R1+WmLtOyZzfrh79dGXQ4AAA3l/a+do1w6oe9y3W6gLhG6AUiS3vyqaXrv0bP1xVuf0jMbu6IuBwCAhpFLJ3TOsfN00wNrtbGTvd1AvSF0A9jj0lMO0byOnC74/sNcRgwAgBo665i5yqZ9XX0ne7uBekPoBrBHJunrqvcv1uauXn3+p5zfDQBArbRkkjr3L+br5t+v1XrO7QbqSuSh28yOM7PbzGyDmTkze2cF2yw1s4fNrM/MVpnZ2eFXCjSGBZOb9bXTFulnj27QzZzfDWAIM7vAzNaYWa+Z3W9mR1e43RnlPn9LyCUC49ZZx8xVcyahq+7kut1APYk8dEvKSXpM0gWVrGxm8yTdLulOSYdL+rak68zsL0OqD2g47zh8ht579GxdeutTenJ9Z9TlAIgJMztd0hWSLpO0WEH/vsPMprzCdnMl/aOke8KuERjPmtMJnXfcfP3owbVat6M76nIAVEnkods59wvn3N85535a4SbnS3reOXehc+4Z59yVkn4s6ZPDbWBmaTNrHVgktVShdKCuXXrKIVo4tUUf+d5DXL8bwIBPSbrWOXe9c+5pBT25W9KHhtvAzHxJ35d0qaTnXukL0LPR6D6wZI5aM0n2dgN1JPLQPQZLJC0b8tgd5ceH81lJnYOWdeGUBtSPTNLXd//6SPUVSvrYfz6s/kIp6pIARMjMUpKO1KAe7Jwrle+P1IMvkfSCc+7fKvxS9Gw0tGwqofOPX6AfPbhOf9rG3m6gHozH0D1N0uYhj22W1GpmTcNsc7mktkHLzPDKA+rHfhOadM2Zi/Xo2hd10Y8fY2I1oLF1SPK19x48bW8bmNmxkj4s6dxRfB16Nhrema+bo4m5lL7965VRlwKgCsZj6B4151yfc65rYJG0M+qagPHiNXPb9c33vFq3PLpB37hjRdTlABgnzKxF0vckneuc21rpdvRsQGpK+fqbE/bXTx9ZrxWb+BUAxrvxGLo3SZo65LGpkrqcc1xfAQjBKa/eT58/+WB9567V+qdlf4i6HADR2CqpqL334E17WX+BpLmSbjOzgpkVJH1A0tvL9xeEWSww3p1+1GzNmpjVP/CGNzDujcfQvVzSG4c89qby4wBCcu5x8/XpNy/Ut5at1BW/Wsmh5kCDcc71S3pIg3qwmXnl+3vrwc9KWqTgSiMDy6166eojXJMQGEEq4enCNy/Usmc266E/bo+6HAD7IPLQbWbNZna4mR1efmhe+f7s8vOXm9mNgza5RtJ8M/uGmR1kZh+T9B5J36pt5UDj+fgJB+iikw7UP//6D/r4TY9od18h6pIA1NYVks41s7PM7GBJ31Fw6c/rJcnMbjSzyyXJOdfrnHty8CLpRUk7y/f7I3oNwLhxymH76aBpLfr6/6zgzW5gHIs8dEt6jaRHyosUNPRHJH2pfH+6pNkDKzvnnpf0VgV7tx+TdKGkc5xzd9SqYKCRfWzp/rrmzMW689kXdNI//a9+9uh6lUr8IwA0AufczZI+raBHP6pgj/VJzrmBydVmK+jbAKrA80yfOekgPfD8dt29ckvU5QAYI2vEd83K1/3s7OzsVGtra9TlAOPS6i27dPl/P6Nlz7ygyS1pvXZeuxZMbtbEbFK+78k5p1LJqegU3HZOJSeVnJNzku+ZWjNJtTUFS8I3FYpOhVJJhaJTd76o3X2F8lJUd39BPfmiPLPyEnwOM5PvSb4N3A6e87xgPd+sfHvQ+vbSOsHz2vN592y/5/ag7Yd8jaaUr2mtGbXnUjKzqL8lqBNdXV1qa2uTpLbyRGINjZ6NRuec0+nfvU+7+gr6+SeOlefRb4C4qLRnJ2pXEoB6smBys6476yg98qcduuOpzXrg+W16cM0Obe/ul3NOZi+FV89Mtud28LG/WNKuvoJe6X2/XMpXLp1QLp1QOhEcnFNyTsVSEN6Lg2+XBsJ9EPCLpSD4l5xTcSD0l156vlomZJM6em673nH4DJ28aBoBHABQNWamz7zlQL3rO8t1y6PrddpirqIHjDeEbgD75IjZE3XE7Ilj2rZUctrZV1BXT17FkpPvmZK+J98zZVO+mpJ+aO/ou0F73gcH+NLAHvrSS8+XhgT7onNyzmlXX1GbOnv1zMYu/W7VVl3wg4d15JyJuvy0RVo4tSWUugEAjefIOe16y6HT9A93rNBbDp2uppQfdUkARoHDyzlUDUCV/G7VVl1661PauqtP//nh1+rQGW1Rl4RxiMPLX46eDQT+uG23Trzibv3NCQfoE288IOpyAKjynh2HidQAoC68fv8O/eT8YzSnPav3XXufntrQGXVJAIA6MWdSTmcfM1ffuXu1XujqjbocAKNA6AaAKmrLJvW9c16ruR05feiG32tjZ0/UJQEA6sTHTzhA6YSnb/5yZdSlABgFQjcAVFlrJqnrznqNEp6nD9/woHZxPXMAQBW0NSX1f954gP7fQ2v19IaGP/sEGDcI3QAQgiktGf372Udp7Y5unXnd/erszkddEgCgDrz/dXM0b1JOX7n9aTXi3EzAeEToBoCQHDitRT8453Vas223zrj2Pq3cvDPqkgAA41zS9/R3bztY967epv9+YlPU5QCoALOXMxMqgJCt2LRT533vQa3b0aPTj5qlc46dp/mTm/9svVLJaevuPm3q7NXO3oJ6+otKJjw1JYPLpzWlPGWSvlK+p75CSX2FonrzpT23TcGl1rIpX00pX9lUQk1JX4VSSb35knrzxT3b9OaDj05OLZmkWjIJtZY/ZpIvXYrGOad80alQKilfcMqXSioUnfLFktJJT1NaMrUcyobA7OUvR88G9u6c/3hQT67v1LILj1dzmqsAA1GotGcTumngAGqgr1DUjff+UVfftUo7uvN69awJmjmhSb5n2tTZq41dPdrU2at8Mfq/ySnfk+dJ+WJwffKRzGpv0jsPn6FPvWmhzMK5pnqjIXS/HD0b2Lu127v1pm/drbOWzNVnTz446nKAhlRpz+ZtMQCogXTC17nHzddfL5mjXzy5UXev2KItu/qULzrtNyGjxXMmar8JGU1va9L0tozampLKlPdS9/QX1ZMv7vnYXygpnfCVTnrKlD+mE55KTuruD/aQd5eX3nxRCd+UTvjKJIM95ZlBtyVpZ29BO3vz6hr42JOXk5TwPSU9U9L3lPCDj3tue566evP67aqt+pffrFI2ldBHly6IdpABoIHMas/q42/YX99e9ge968iZWji1JeqSAAyD0A0ANZRJ+jr1iJk69YiZUZdSFScvmq72bErfuONZLZzarDcePDXqkgCgYZx73Hz95OH1+sItT+qH572OI46AmGIiNQDAPvnUmxZqyfxJ+uffrIq6FABoKOmEr8ve/ird//x2/ezRDVGXA2AYhG4AwD7xPNOxB3TouS27uHwNANTYcQsn662LpuvLP39a23f3R10OgL0gdAMA9tn8jpx29ha0jX/4AKDmLn37ISqUnL5021NRlwJgLwjdAIB9Nq8juATa81t3R1wJADSeKS0ZXfK2Q3TLoxu07OnNUZcDYAhCNwBgn82ZlJWZ9PwWQjcAROG0xTP0hgMn6+L/elxbd/VFXQ6AQQjdAIB9lkn62q+tSc+xpxsAImFm+vpfHaaSkz7z48eZYwOIEUI3AKAq5k/O6fmtu6IuAwAa1pSWjL7xrsP062df0H/cuybqcgCUEboBAFUxryPHOd0AELETD5mqD75+rr5y+zO6/7ltUZcDQIRuAECVzOvIac22bhVLHNIIAFH63MkH6zVzJ+qCHzysdTu6oy4HaHiEbgBAVczryKm/UNKGF3uiLgUAGlrS93TV+xYrm0rovdfep/X8XQYiRegGAFTFfC4bBgCxMak5rZvOe50k6Yx/Xa5nNnZFXBHQuAjdAICqmDGxSUnfCN0AEBMzJjTph+ctUTaZ0Nuv/K2u+NVKbe7qjbosoOEkoi4AAFAffM80Z1JOz21hBnMAiIsZE5p06yderyt/s0rfuWuV/vnXf9DB01s1Y0KTWjIJ9fQX1Z0vqqe/oP5CSfmiU6FUUqHklEn4askk1JJJqjWTUGtTsnw/oUzSV09/Ubv7g227+4vlZfDtoiQp4Zk8z5TwTL6ZfM+U8E2SVCh/vXzRKV8sqVAM5gXxPJPvac/6vmfyhtx2kpxzck4qDf4oSYOmF3F6+VwjzklF51RyUqnk/uz5QtGpN19Ua1NSMyY0qTmdUMI39eVL2t1f0O6+onb3F9TdV1R/saRM0ldT0lM2lVA64Snpe0r4pqTvKV8sqTdfVE8+GI+e/qL6CiUlvOD5ZMJTqrzuwGKmPWPRXyypUAy+H0nfUybpKZPwlUn5yiR8pRKeSiWnQsmpWP6+FffcDz6WSk7T2jI6eHqr/urImWprSob144ZhELoBAFUztTWtrbv7oy4DADBIOuHrwjcfqHOOna/frNis+5/brs1dvVq/o0dNKV/ZpK+OXEqpRBAWE56nhGfqLRS1s7egnb0Frd3RrZ0bg9tdPXn1FUrKJD3l0ongc6R8ZZMJZdNBUJ/SklE25ctMQQAsOhVdEAQHlpJzLwVUz1MyEXxtKQjPg9ctOrcnXA4855nJLLhGuUkv3S/ffpkhdwfCvJnJG/Jc0veUTnjq7Mlr3Y4ebe7qVbHklE76yqV8tWWT2m9CRtlUQqmEp57+IFQHgTq4ne8NQnPCNzUlfU3MprRfWzBOqYSnYikI1vliSf3F8psOheB+seSU8j3l0p6S5XCe8E358psBvfmiOrvz2pzvVX+xFLyJ4b30hoRf/v75nimdCEL8ys07detjG3TTA3/S9WcfpVnt2dB+3vDnCN0AgKrJpoK9JgCA+GnLJnXqETN16hEzoy4FEVi9ZZc+eP3vderV9+r2vzlWU1szUZfUMDinGwBQNdmUr919hajLAAAAQyyY3Kwff3SJtu3u090rt0RdTkMhdAMAqiabSqgnz55uAADiaEpLRgsmN+uJdZ1Rl9JQCN0AgKphTzcAAPF22Iw2Pb6e0F1LhG4AQNXkUj7ndAMAEGOLZrbpmY1d6i+Uoi6lYRC6AQBV05RKaDehGwCA2Dps5gT1F0pauXln1KU0DEI3AKBqcmn2dAMAEGeHTG+V75me4BDzmiF0AwCqpinpl683yiFrAADEUVPK1wFTmvX4uhejLqVhELoBAFWTSyckSd3s7QYAILYOm9mmx5nBvGYI3QCAqmlK+ZKk7n5mMAcAIK4WzZygFZt2qpfLfNYEoRsAUDW5FHu6AQCIu4VTmlUoOa3b0RN1KQ2B0A0AqJrswJ7uPkI3AABx1dqUlCTt6uPItFogdAMAqibL4eUAAMRec3kOlp29+YgraQyEbgBA1WQ5vBwAgNhrzZT3dPfyJnktELoBAFWTTQ/s6SZ0AwAQV7lyv95J6K4JQjcAoGqyyaCJ7+bwcgAAYivhe8qmfHVxeHlNELoBAFWT8D2lEp562NMNAECstWQSTKRWI4RuAEBVZVM+e7oBAIi55nSCw8trhNANAKiqXCrBnm4AAGKuJZNkIrUaIXQDAKqqKeVrN9fpBgAg1loyCe3s45zuWiB0AwCqKpfy1ZPnnXMAAOKsJcPh5bVC6AYAVBV7ugEAiD/O6a4dQjcAoKpyqQTX6QYAIOZaMknt5JJhNUHoBgBUVVPKVzezlwMAEGtcMqx2CN0AgKpiTzcAAPHH4eW1Q+gGAFQVe7oBAIi/1kxS3f1FFYqlqEupe4RuAEBV5dI+e7oBAIi55kxCkpj8tAYI3QCAqspyeDkAALHXUg7dXUymFjpCNwCgqrIcXg4AQOy1ZJKSxGRqNUDoBgBUVTblqzdfUrHkoi4FAAAMozkd7OlmMrXwxSZ0m9kFZrbGzHrN7H4zO3qEdc82Mzdk6a1lvQCAvcumgibek+cQ83o0yn59rpndY2Y7ysuykdYHANROa2YgdHN4edhiEbrN7HRJV0i6TNJiSY9JusPMpoywWZek6YOWOWHXCQB4ZdmUL0nq5nC1ujOGfr1U0k2S3iBpiaS1kn5pZjPCrxYAMJKBidQ4vDx8sQjdkj4l6Vrn3PXOuaclnS+pW9KHRtjGOec2DVo216RSAMCIBvZ0M5laXRpVv3bOvd85d7Vz7lHn3LOSzlHwv8cba1YxAGCvmpK+fM/UxeHloYs8dJtZStKRkpYNPOacK5XvLxlh02Yz+6OZrTWzn5nZq0b4Gmkzax1YJLVUq34AwMsN7OnezWRqdWUf+vVgWUlJSdtH+Dr0bACoATNTczqhXYTu0EUeuiV1SPIlDd1TvVnStGG2WaHgXfV3SDpTweu418xmDrP+ZyV1DlrW7WPNAIBh5NJB6O5hT3e9GUu/HurrkjZoUHDfC3o2ANRISybBOd01EIfQPWrOueXOuRvLh6vdLek0SVskfWSYTS6X1DZoGS6cAwD2UVP58PLdhG4MYmYXSzpD0qnOuZEmP6VnA0CNtGSSnNNdA4moC5C0VVJR0tQhj0+VtKmST+Ccy5vZI5L2H+b5Pkl9A/fNbGyVAgBeUS41sKebJl5nxtyvzezTki6WdKJz7vGR1qVnA0DttKQTXDKsBiLf0+2c65f0kAZNqmJmA5OsLK/kc5iZL2mRpI1h1AgAqFzTwDndfezpridj7ddmdpGkL0g6yTn3YNh1AgAqx+HltRGHPd1ScPmR/zCzByU9IOlvJeUkXS9JZnajpPXOuc+W718i6T5JqyRNkPR/FVwy7LpaFw4AeLmU7ynhmbq5Tnc9Gm2//oykL0l6n6Q1ZjZw7vcu59yuGtcOABiiOZPQps6RzvhBNcQidDvnbjazyQoa8zRJjyp4R3xgspbZkkqDNpko6dryujsUvPN+TPnyJQCACJmZmlI+1+muQ2Po1x+VlJL04yGf6jJJXwy1WADAK2rJJPSHzfTrsMUidEuSc+5KSVcO89zSIfc/KemTNSgLADAGuVSCidTq1Cj79dwalAQAGKPmNBOp1ULk53QDAOpPSyahrh7OEQMAIM44p7s2CN0AgKprz6W0o7s/6jIAAMAIWjPB7OXOuahLqWuEbgBA1bXnUtq+m9ANAECctTYlVSg5dXNKWKgI3QCAqiN0AwAQf5NyaUnStl307DARugEAVUfoBgAg/jpaUpKkLbv6Iq6kvhG6AQBVNxC6OUcMAID4emlPN6E7TIRuAEDVtedS6iuUOEcMAIAYa8+l5Jm0lcPLQ0XoBgBUXXsuOFyNQ8wBAIgv3zO151Layp7uUBG6AQBVNzFL6AYAYDyYlEtzeHnICN0AgKqb1FwO3VyrGwCAWOtoSXF4ecgI3QCAqhvY072DPd0AAMRaR3Oa2ctDRugGAFRdJukrl/I5vBwAgJjraObw8rARugEAoWhv5lrdAADE3aRmDi8PG6EbABCK9iyhGwCAuOtoTquzJ6/+QinqUuoWoRsAEIr2HKEbAIC4m9yclsQVR8JE6AYAhGIioRsAgNgbuOII1+oOD6EbABCKSbkUlwwDACDmOsp7upnBPDyEbgBAKNjTDQBA/O3Z072T0B0WQjcAIBSTcil19uRVKDIxCwAAcZVO+GrJJLSNN8pDQ+gGAIRiYjYl56QXe/JRlwIAAEYwuTnNnu4QEboBAKEYOFxtB++cAwAQax3NaSZSCxGhGwAQionZIHRzuBoAAPHW0ZKiX4eI0A0ACMWkXDAbKnu6AQCIt0m5tLZweHloCN0AgFC0ZBLKJD09sGZ71KUAAIARTGvL6E/bu/VCV2/UpdQlQjcAIBSeZ/rbExfqhnvX6L7ntkVdDgAAGMYZR81SNpXQhT96TKWSi7qcumPONd6gmlmrpM7Ozk61trZGXQ4A1K1iyem9196n9Tt6dNFJB2p2e1ZJ35NZ8LzJZKZgUfDgwHPjTcIzzZ/cvM+fp6urS21tbZLU5pzr2udPOM7RswGgNu5euUVn/fsDOvuYuTrhoClqzwVzswz06D29e8j98Whqa0ZtTcl9/jyV9mxCNw0cAEK1bke3zrzufq3Z1h11KaGa1d6key46YZ8/D6H75ejZAFA73/rVSl191yrli/WdEb/57lfrXUfO3OfPQ+geAQ0cAGqvsyev9Tt6VCw5OQW9xznJSRroReO5I6V8T4fOaNvnz0Pofjl6NgDUVqFY0oYXe9XVmy/3aaeByDjQs8dzv5akOe1ZTWpO7/PnqbRnJ/b5KwEAUIG2pmRVDuUCAADhSfieZk/KRl1GXWEiNQAAAAAAQkLoBgAAAAAgJIRuAAAAAABCQugGAAAAACAkhG4AAAAAAEJC6AYAAAAAICSEbgAAAAAAQkLoBgAAAAAgJIRuAAAAAABCQugGAAAAACAkhG4AAAAAAEJC6AYAAAAAICSJqAuIUldXV9QlAADwMvSmvWNcAABxU2lvMudcyKXEj5nNkLQu6joAABjBTOfc+qiLiBo9GwAwDozYsxs1dJuk/STtDOlLtCj4B2FmiF+jnjBelWOsRofxqhxjVblajFWLpA2uEZv0EPTsWGGsRofxqhxjNTqMV+Vi0bMb8vDy8oCEtvcg+P9AkrTTOcfxcK+A8aocYzU6jFflGKvK1Wis+B6U0bPjg7EaHcarcozV6DBelYtLz2YiNQAAAAAAQkLoBgAAAAAgJITucPRJuqz8Ea+M8aocYzU6jFflGKvKMVb1he9n5Rir0WG8KsdYjQ7jVblYjFVDTqQGAAAAAEAtsKcbAAAAAICQELoBAAAAAAgJoRsAAAAAgJAQugEAAAAACAmhe4zM7AIzW2NmvWZ2v5kd/Qrrv9vMni2v/4SZnVyrWuNgNONlZuea2T1mtqO8LHul8a0no/3ZGrTdGWbmzOyWkEuMjTH8Hk4ws6vMbKOZ9ZnZykb6XRzDeP2tma0wsx4zW2tm3zKzTK3qjYqZHWdmt5nZhvLv1Dsr2GapmT1c/rlaZWZnh18pKkXPrhz9enTo2ZWjZ1eOfl258dKzCd1jYGanS7pCwfTziyU9JukOM5syzPrHSLpJ0r9JOkLSLZJuMbNDa1JwxEY7XpKWKhivN0haImmtpF+a2Yzwq43WGMZqYLu5kv5R0j1h1xgXY/g9TEn6laS5kv5K0oGSzpW0vhb1Rm0M4/U+SX9fXv9gSR+WdLqkr9Wk4GjlFIzPBZWsbGbzJN0u6U5Jh0v6tqTrzOwvQ6oPo0DPrhz9enTo2ZWjZ1eOfj1q46NnO+dYRrlIul/SlYPuewr+CFw8zPo3S/r5kMfuk3RN1K8ljuO1l+19SV2SPhD1a4njWJXH53cK/sjeIOmWqF9HHMdK0vmSVktKRl37OBmvKyX9eshj35T026hfS43HzUl65yus83VJTw557IeS/ifq+lno2WGO1V62b5h+PdbxomdXNlaN3LPp1/s0drHt2ezpHqXyO29HSlo28JhzrlS+v2SYzZYMXr/sjhHWrxtjHK+hspKSkrZXvcAY2YexukTSC865fwu3wvgY41i9XdJySVeZ2WYze9LMPmdmfugFR2yM43WvpCMHDmkzs/mSTpb03+FWOy417N/4uKNnV45+PTr07MrRsytHv66JSP7GJ8L85HWqQ8G7lJuHPL5Z0kHDbDNtmPWnVbe0WBrLeA31dUkb9Oe/IPVm1GNlZscqeLf88FAri5+x/FzNl3SCpO8raEb7S7pawT+Il4VTZmyMeryccz8wsw5JvzUzU9AvrnHONcrhaqMx3N/4VjNrcs71RFATAvTsytGvR4eeXTl6duXo1+GLpGezpxuxZmYXSzpD0qnOud6o64kTM2uR9D1J5zrntkZdzzjgSXpB0nnOuYecczdL+qqCQ9gwhJktlfQ5SR9TcE7ZaZLeamZfiLAsADFFvx4ZPXvU6NkVol+PD+zpHr2tkoqSpg55fKqkTcNss2mU69eTsYyXJMnMPi3pYkknOuceD6e8WBntWC1QMMHIbcEbm5LKb6SZWUHSgc651aFUGr2x/FxtlJR3zhUHPfaMpGlmlnLO9Ve/zNgYy3h9WdL3nHPXle8/YWY5Sf9qZl8tH+6GwHB/47vYyx05enbl6NejQ8+uHD27cvTr8EXSs9nTPUrlX/KHJL1x4DEz88r3lw+z2fLB65e9aYT168YYx0tmdpGkL0g6yTn3YNh1xsEYxupZSYsUHKY2sNyql2ZjXBtiuZEa48/V7yTtX15vwEJJG+u4eUsa83hlJQ1t1AP//JgwWMP+jY87enbl6NejQ8+uHD27cvTrmojmb3zUs8yNx0XBNPy9ks5SMDX/dyXtkDS1/PyNki4ftP4xkvKSLlRwPsYXJfVLOjTq1xLT8fqMpD5J71Jw3sXA0hz1a4nbWO1l+xvUODOhjvbnapaCWXX/RUHjfquCc3g+H/Vriel4fbE8XmdImqegIa2SdHPUr6UGY9Wsl/4pdpI+Wb49u/z85ZJuHLT+PEm7JX2j/Df+Y5IKkv4y6tfCQs8Oeawatl+PZbz2sj09m55djbFq2H5dfv3jomdHPlDjdZH0cUl/LDeb+yW9dtBzd0m6Ycj675a0orz+k5JOjvo1xHW8JK0p/9IMXb4Y9euI21jtZduGaeBjGSsFM1PeV25mqxWcA+VH/TriOF4KTj+6tNy4eyT9SdJVkiZE/TpqME5Lh/kbdEP5+Rsk3bWXbR4pj+1qSWdH/TpYXvb9oWeHMFaN3q/H8rM1ZFt69ghj1cg9m349qrEaFz3byl8YAAAAAABUGed0AwAAAAAQEkI3AAAAAAAhIXQDAAAAABASQjcAAAAAACEhdAMAAAAAEBJCNwAAAAAAISF0AwAAAAAQEkI3AAAAAAAhIXQDAAAAABASQjcAAAAAACEhdAMAAAAAEBJCN4AxM7P3mlmPmU0f9Nj1Zva4mbVFWRsAAAjQr4FoEboB7IsfSlop6XOSZGaXSTpR0lucc51RFgYAAPagXwMRSkRdAIDxyznnzOzzkn5sZpskfULSXzjn1kdcGgAAKKNfA9Ey51zUNQAY58zsYUmvkvRm59zdUdcDAAD+HP0aiAaHlwPYJ2Z2kqSDJPmSNkdcDgAA2Av6NRAd9nQDGDMzWyzpLkkfkXS2pC7n3LujrAkAALwc/RqIFud0AxgTM5sr6XZJX3PO3WRmz0labmaLnXMPR1sdAACQ6NdAHLCnG8ComVm7pHsl3eWcO3/Q47dL8p1zJ0VWHAAAkES/BuKC0A0AAAAAQEiYSA0AAAAAgJAQugEAAAAACAmhGwAAAACAkBC6AQAAAAAICaEbAAAAAICQELoBAAAAAAgJoRsAAAAAgJAQugEAAAAACAmhGwAAAACAkBC6AQAAAAAICaEbAAAAAICQ/H8EhtkBXkY9uAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1000x800 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8), dpi=100)\n",
    "states = (r\"$\\rho$\", r\"$u$\", r\"$\\rho e$\", r\"$p$\")\n",
    "profiles = (back_to_primitive(q[-1], Primitive.rho), back_to_primitive(q[-1], Primitive.u), q[-1, Conservative.energy.value], back_to_primitive(q[-1], Primitive.p))\n",
    "for i, (state, profile) in enumerate(zip(states, profiles)):\n",
    "    plt.subplot(2, 2, i+1)\n",
    "    plt.plot(x, profile, linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(state)\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b4bf0738-9ba2-4d38-8ba0-852ee50ce490",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "gpytorch",
   "language": "python",
   "name": "gpytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
